Essential Software for Linux

Here is a list a few packages I install every time I setup a new Linux box. As this isn’t something I do often (probably only when I’m buying a new computer), I really have to write them down so I don’t forget about them next time. Here is a complete list with the package name and their description. The last update made for this post was made in July 24, 2008.

  • System
    synaptic – graphical user interface to apt-get.
    prelink – improves system performance prelinking libraries and executables. Commonly I use prelink -avmR for optimizing my systems. Please see manpage for more details.
    apt-build – builds your packages from source with any desired optimization level.
    unrar – the proprietary WinRAR command line equivalent for linux, from rarlabs. If you want a pure GPL system, stick to unrar-free. [considering ditching in favor of p7zip]
    p7zip – the free command line archiver tool for 7z packages. Compression ratios are usually considered to be better (source?) than those of .rar packages. Plus, it’s LGPL.
    less – improved more. Perhaps one of the first essential things you should apt-get if you didn’t have it already.
    module-assistant – essential tool for building kernel modules The Debian Way(tm).
    deborphan – Lists unused and orphaned packages that generally can be removed from your system.

  • Desktop Tools
    katapult – the most useful application launcher I’ve ever seen. Press Alt + Space and a nice, elegant-looking window will pop in the center of your screen. Type anything – a program name, a song name, a google query or even a mathematic formula – it will autocomplete your command and run, play, search or compute for you.
    yakuake – want a terminal? Just hit a keyboard shortcut (I have set mine to alt + ~) and a terminal you scroll down your screen just like the Quake console would. Impressive and useful.
    ark – graphical user interface for various command line compressing and archiving tools.

  • Internet Tools
    emesene – finally a MSN Messenger client worth looking. For years Linux lacked a decent Messenger clone with a consistent interface that didn’t want to implement every protocol under the sun.

  • Browsers
    opera – The Fastest Browser on Earth! Albeit Opera has been known to be one of the lightest internet browsers available, which in the past could fit inside a single floppy disk, it has built in support for chat, email, torrents, bookmark synchronizing, mouse gestures, voice recognition, thousand of skins and is known to be one of the most secure and standard compliant browsers. Runs everywhere, on computers, cellphones, fridges, televisions and Wiis. For me, it its my browser of choice. Isn’t open source, though.
    w3m – So you decided to upgrade X or your nvidia drivers and something went wrong. Now X fails to start and instead you are locked in the dark, text-only world of the linux terminal. Not a problem if you have w3m, a browser for text mode which you can use to call for help searching google. It even supports mouse clicking and the display of pictures through the framebuffer!

  • Development
    build-essential – essential build tools, such as gcc and libc development libraries. A must have if you plan to build Debian packages, including compiling and installing your kernel The Debian Way™.
    eagle – the proprietary circuit design tool from CADSoft. Although a powerful software for Windows, its linux counterpart has some issues, mainly with desktop integration. It looks really like a Windows app in your Linux box, not matching any your GTK or KDE themes. Sometimes it want to be run as root (!) to gain some additional privileges. Also it had some problems with X, but I think they were due to compiz.

  • Games
    mupen64plus – The best N64 emulator for GNU/Linux, fork of the original Mupen64, which hasn’t been updated for years. Anyone willing to pack it up for Debian?

  • Multimedia
    amaroK – THE best audio player ever coded. Well, at least until last time I’ve upgraded it. One of the biggest reasons for flipping the linux switch.
    kmplayer – video player fronted for various multimedia engines.
    xine libraries – acts as an engine for amarok and kmplayer, also providing mp3 support through plugin package. To replaced by xine 2 libs
    Packages: libxine1 libxine1-plugin

  • Office

  • Google Tools
    picasa – picture management tool by Google.
    google-desktop-linux – Google desktop for linux. It doesn’t have that fancy sidebar of the windows version, so it isn’t of much use for me.
    googleearth-package – tool for downloading Google Earth and creating a nice .deb package. If it only told you how to do so. After installing, type make-googleearth-package on a console to create the package. Ensure you have proper privileges and install using dpkg -i package_name.deb.
    ps: I really feel they should standardize package names for google things. To apt-get picasa and google desktop, you may have to add the Google Linux Software Repository to your apt sources.

  • Themes & Styles (KDE)
    gtk-qt-engine – enables both KDE and GTK based apps to share the same QT theme. A must have for KDE users if your choosen theme isn’t available to GTK. Well, a must have anyways.
    Some interesting additional styles for KDE 3.5
    Packages: kde-style-serenity kde-style-qtcurve kwin-style-knifty kwin-baghira

  • Themes & Styles (other)
    lxappearance – a tool for changing GTK styles. Useful for changing the style of applications that have to run with higher privileges, like the Synaptic Package Manager, if you use it together with sudo. i.e: sudo lxappearance 
    splashy – adds a nice bootsplash to your system without touching your kernel.
    Interesting themes for GTK
    Packages: gtk2-engines-qtcurve

  • Interoperabilty
    wine – The ubiquitous tool for porting emulating running your windows apps on linux. Has reached 1.0 state some months ago, has support for Windows XP themes and works really, really well. Under constant development, though.
    winetricks – A script with tricks and hacks to run applications which just wouldn’t work with a vanilla wine installation.
    mono – The .Net Framework for Linux. I still don’t know if there is a metapackage for downloading the entire library for a complete replacement of the .Net Framework. I usually install the following packages, as dependencies gets automatically resolved.
    Packages: mono-gmcs libmono2.0-cil libmono-winforms2.0-cil

Note to self: Never buy anything from LG again


For the rest of my life I’m sticking with Pioneer. This ain’t the first and probably wont be the last optical drive from LG that gives me headaches in less than one year after I bought it. Apparently, this drive chokes reading some burned DVDs, even DVDs burned by itself, while other computers could read them without a hitch.

The internet is full of complaints for this drive, the GSA-H22N, and I remember well the experience I had working in a school full of computers with LG drives in the past also wasn’t exactly the most troubleless ever.

But the world is weird, isn’t it? Turns out the best writable CD media I’ve ever bought in my life was also branded by LG. For years I’ve used this media with my Pioneer 110D, the most fast, reliable, cool and affordable DVD±R burner I have ever bought.

Configuring WinPic800

WinPic800 is a free (as in beer) PIC programmer software compatible with the Tait-style of hardware programmers. In addition, it is also compatible with the programmer I detailed in my last post.

However, due to the variety of styles and designs of the same programmer out in the web, one has to carefully configure soft programmers so they can talk with a hardware device. To configure WinPic800 to work with the parallel schmitt trigger programmer, please follow this instructions:

  • Download the latest version of WinPic800
  • Download the hardware definition file for this device
  • Locate the directory where you installed WinPic800
  • Put the downloaded .hwp file inside the Hardware folder
  • Open WinPic800, go to Devices > Settings > Hardware
  • Select the Tait Schmitt device entry and click OK

Now you may plug the hardware on the parallel port, insert a PIC on the programmer, turn it on and then click on Device > Detect Device. The name of the microcontroller on the programmers socket should be shown on screen.

Battery-Powered Parallel PIC Programmer


For those who don’t know, PICs are essentialy tiny computers, with built-in internal memory, processor, input/output controllers, comparators and other peripherals packaged inside a single silicon chip.

744px-Microchip_logo.svg Last year, on the Microsoft Academic Cell for Robotics of the Federal University of São Carlos, I needed something to introduce our members to the eletronics world. So we decided to begin by using Microchip‘s PICmicro microcontrollers to build simple but functional circuits, a nice way to gather knowledge ranging from basic analog electronics to low-level microcontroller programming in the same time, while also having some fun.

But then, we needed a programmer. Not the person, but the hardware required to store a software program inside the microcontroller in order to instruct it into doing something useful, thus effectively programming the device.

After spending some time googling around for custom-built programmers, and after seeing they were quite simple to design, we decided to build or own as a good starting exercise. We just needed something simple, reliable, that wasn’t too expensive and that could be easily built by students.



    To keep the budget factor low, we decided on a David Tait‘s design which uses the computer parallel port and a parallel cable as a transmission line. Before designing the device, there were some initial modifications we decided to have in our circuit:

    BH4AA-PCIt would run entirely on batteries. Having a separate power supply for the programmer is just asking for more wires around and having more wires around usually equals having more mess on the work desk. Also adding to the fact that power supplies here aren’t so cheap for a student budget, creating a self-powered device was the most suitable option for us.

    But since we wanted something simple and cheap, but still reliable and expensible, some extra care was needed, because, if power supplies weren’t cheap, good batteries aren’t either. Efficiency should be a main goal, because if we had to replace batteries everytime, then the savings on the power supply wouldn’t justify the increased cost in the long run.


The Design

    To improve efficiency, our circuit uses a schmitt trigger buffer for translating parallel port voltages into TTL-compatible voltages. Also, the proper use of transmission line terminations allows the device to work with longer parallel cables. Actually, I have been using 2m cables myself and didn’t run into any issues yet.

    296-TO92-3, TO-226AA To regulate the unpredictable alkaline voltages down to a nice constant 5v, we also couldn’t rely on a standard linear regulator like the 7805 because it requires at least 7.5v to work properly. In other words, using it would require at least 5 cells with at least 90% of charge left available in our circuit. Too wasteful. In turn, a LDO regulator would be fantastic, as it works with voltages as low as 5.4 volts.

    Just for clarification, I couldn’t just plug 4 or 3 cells in series because newly replaced alkaline batteries can source voltages as high as 1.68v per cell rather than they nominal 1.5v, resulting in almost 7v of microcontroller killing voltage. Also, 9v batteries were avoided for their low mAh capacity, as the device should be able to power-up other circuits trough its ICSP connections during programming.


    To enter programming mode, most PICs needs a voltage source somewhere around 12v present on the MCLR pin. In the past, however, a real current source was required for EEPROM programming, but for the newer, flash-memory based chips, the current doesn’t actually matters, only the voltage does, as it only purpose is to signal the device to enter programming mode.

    Because of the very experimental nature of this project, we sacrified the ability to program EEPROM chips and aimed only for the flash-memory chips (it may work with EEPROMs, but we just haven’t tested it yet). So, if we need a voltage that is almost the triple of our available voltage, but don’t need any actual current, its the perfect scenario for employing a charge pump circuit.

    voltagedoubler Charge pumps are very efficient voltage converters, but with very finite impedance, they can’t source much current. Those circuits use capacitors a "buckets" to pump charge from one place to another, producing higher voltages at the expense of lower output currents. It didn’t take long before we noticed that Intersil offers free samples of their 7660S "Super voltage converter chips", which is great, although the 7660 family is very popular and available from several manufacturers all around the world.

    Nevertheless, we went on and asked Intersil for some of the 7660 samples.



    All considerations taken into account, below is the final schematic for the device, featuring the LP2950-CZ LDO regulator and the ICL7660 in the "voltage tripler" configuration.


    Battery-Powered Parallel PIC Programmer (sch)


Parts list

    Qty Device (Description) Value Parts
    1 Power Switch DIP Switch SW1
    1 LED5MM Green LED1
    1 LED5MM Red LED2
    6 Small Signal Diode 1N4148 D1, D2, D3, D4, D5, D6
    1 Resistor (0.25w) 270 R17
    2 Resistor (0.25w) 100 R14, R15
    2 Resistor (0.25w) 1k R1, R11
    4 Resistor (0.25w) 4k7 R3, R4, R5, R8
    9 Resistor (0.25w) 10k R2, R6, R7, R9, R10, R12, R13, R16, R18
    3 Ceramic Capacitor 100nF C3, C8, C11
    2 Ceramic Capacitor 470pF C9, C10
    2 Eletrolytic Capacitor 1uF C1, C2
    4 Eletrolytic Capacitor 10uF C4, C5, C6, C7
    2 Transistor PNP BC557C T1, T2
    1 Transistor NPN BC548 T3
    1 Voltage Converter ICL7660CPA IC3
    1 Schmitt Trigger Inverter 74HC14N IC5
    1 LDO Voltage Regulator LP2950CZ-5.0 IC1
    1 SIL Pin Header 3-way J2
    1 SIL Pin Header 3-way J1
    1 SIL Socket 20-way J3
    1 DIL Socket 18-way DIL18
    1 DIL Socket 20-way DIL20
    1 Serial Connector DB9 Female DB9
    1 Parallel Connector DB25 Female DB25
    1 Battery Clip 4xAA Cell Holder  



    The samples from Intersil arrived only a few weeks later, carefully packed inside a hard plastic box filled with foam, ensuring the chips had some comfort during their long travel overseas.

    Well, that box was really too useful to be discarded, so we figured out a nicer destiny for them. At the time I didn’t yet have my fellow Dremel rotary tool, so I just cut its top off with a knife and made some holes on the sides for screwing a DB-25 connector (for the parallel port) and a DB-9 connector (for the ICSP connections). Here are the final pictures of the programmer mounted inside the Intersil’s sample’s box (sorry for the crappy resolution):



    And finally, here is the perfboard (pre-punched circuit board) layout we used for placing components on the box. Please note this layout should not be used for PCBs.

    Battery-Powered Parallel PIC Programmer (brd)


    All Eagle files can be obtained here. For more information on how to setup a software programmer to work with this hardware, please see the next post, configuring WinPic800.



The Microchip name and logo is a registered trademark of Microchip Technology Incorporated in the U.S.A. and other countries. The schematic presented here is copyright of its original author, licensed under the terms of the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.