Ant-apt-repo : An ant task to create apt repository from .deb files

This is a simple Ant task (hosted here) to create an apt repository from within an Ant project. It is ported from the maven plugin – theoweiss/apt-repo.

This task is usually used with the debian package creation task ant-deb.


    <taskdef name="aptrepo" classname="com.codemarvels.ant.aptrepotask.AptRepoTask" >
            <fileset dir="lib/ant/apt-repo" ><!--all jar files in this project is expected to be found here -->
                 <include name="*.jar"/>
<target name="createRepository">
  <aptrepo repoDir="${debian.folder}/output/repository"/> <!-- keep all .deb files in this folder -->


  • Keep all .deb files you want to publish, in the repoDir folder.
  • The package listings will be created in the same folder, which can then be published using a web-server as a debian repository. (The URL to this folder will be the repository URL to be added to sources list)

How to use old an android phone as a wireless speaker ?

I recently converted an otherwise useless old android phone into wireless speakers (complementing an old wired 2.1 speaker-set I had).

The setup needs two phones, a 2.1 speakerSet and WiFi network. After searching and trying many Apps from PlayStore, this is what worked for me –

  1. In the old phone –
    1. Open Play Store.
    2. Search and Install SoundSeeder Speaker. (Free version. Note – Free version will auto disconnect after 15 mins of usage, after which you will have to pause and play again from your controller phone)
    3. Open SoundSeeder Speaker. Provide a unique name when prompted. Eg. “My wireless Speaker”
    4. Open settings (Android details button => Menu Opens => Settings).
    5. Make sure “Auto Connect” and “Stay Awake” are checked.
    6. Return to Android home.
    7. Open phone’s WIFI settings.
    8. In the advanced settings=> “Wi-Fi Sleep policy”, make sure the phone WiFi is always awake.
    9. Connect the speakers to this phone.
  2. In the current phone (using which you intend to play audio and control the speakers) –
    1. Open Play Store.
    2. Search and install SoundSeeder Player. (Free version)
    3. Open SoundSeeder Player. Provide a name for the device when prompted.
    4. Click on the speaker icon on top right corner.
    5. Click search Icon in the UI that opens.
    6. The name of the phone you configured before is displayed. Add it.
    7. Add your favorite songs to the player by clicking the Music Icon. Play one file and confirm its getting played on your speakers.

Thats it. You should be able to stream songs from your phone to the speakers via your old phone.

Note – Again, the free version does disconnect around every 15 mins, after which the controller phone has to pause and restart the music.

Sylvester–Gallai theorem – the intuitive proof

This article presents an effort to use Induction in geometry to prove Sylvester Gallois Theorum.

Theorem statement can be viewed here

For the proof, let us rephrase the theorem as follows –
(1) Given a finite set of points in Euclidian space such that any line passing through two of the points passes through at least one more of them, all points have to be collinear.

Let n be the finite number of points in the given set.

Base case:
Let n=3,
Given 3 points, such that a line containing two of them passes through one more of them, they are by definition, collinear.
Thus (1) is true for n=3.
Induction step
P(k) :
Let (1) be true for a given k points set.

For an external point in the same space to pass through any line passing through two of the points in the k-points set in P(k), it has to pass through the line passing through all of them.
Thus the only way to expand the given set of k points to a set of k+1 number of points, is to include an external point which is collinear with the existing points.
Hence all k+1 points of the expanded set are collinear.

Thus if (1) is true for n=k, then it is true for n=k+1

Thus by principle of induction, (1) is true for all n>=3.

Bring Tab bar to top of terminal in Konsole

Tab selector (tab bar) can be made to appear on the top side of terminal in Konsole  as follows –

  1. Menu Bar => Settings => Configure Konsole
  2. Select TabBar pane
  3. Set “Tab bar position” to “Above Terminal Area”

As you might have noticed now, you can make Konsole open new tabs adjacent to current tab by setting “New tab behavior” to “Put New Tab After current tab”

How to remove URL forwarding to Yahoo Search by or through Search.Conduit

Problem: The URLs including development/local ones are forwarded to Yahoo Search page by a Conduit plugin via their search.conduit portal (as seen from status bar message)

Reason: Spyware by Conduit (Anything that changes the settings of your computer without explicitly asking you, and sends out information from your computer without letting you know – is a spyware/malware indeed)

Fix: Available here : “” (Download and run Adware-Removal-Tool-v3.8.exe from there. Verified working.)

AppFuse jetty:run throws error “ZipException: invalid distance too far back”

Problem: When running mvn jetty:run to launch jetty, Appfuse throws error “ invalid distance too far back”

Reason: One of the jars in maven repository is corrupted.

Fix: (Kind of nuke all, but works)

  1. Delete repository folder from .m2 folder : rm -r ~/.m2/repository
  2. Add any local jars you may have added to repository
  3. From AppFuse project folder, run : mvn:jetty-run


  1. Find the offending jar from the exception stacktrace.
  2. Delete the folder containing the jar inside ~/.m2/repository
  3. Run “mvn install” or mvn:jetty-run.

Solved: Spring util:map, the Keys are not correct / as expected

Problem : The map instance created using util:map does not give expected keys in Java class when obtained using autowiring.

Reason: When autowired, spring searches for the first Map with same name, and the result might not be the Map configured by the developer in the context xml.

Fix: Instead the tag @Autowired, use  @Resource(name=”mapName”) for the map instance in the caller class.