/archinst/

ArchInst


Semi-interactive install script for Arch Linux.

The script, written in bash (apologies to zsh users), carries out a combination of customizable tasks for both beginner or advanced users, and automates the somewhat tedious task of installation. It works for both x86 and x86_64 architecture, although includes some post-installation tasks that are useful in other systems as well. It is highly customizable and per-system configurations are allowed, however, being Arch Linux, might require a bit of experience with linux (or reading the ArchWiki).

The procedure of installing archlinux comprises of a total 4 stages to setup upto the administrator account, and another one to setup the user account specific settings. Namely these stages and the steps they perform are described below.

  1. Pre-Boot
    • Download ISO from any of the mirrors.
    • Verify ISO with the signature file.
    • Write ISO to USB.
    • Boot device with USB. (Preferably with help of user.)
  2. Pre-Installation
    • Set time to localtime.
    • Check if UEFI-boot. (Does not support UEFI, yet.)
    • Update mirrorlist for pacman.
    • Mount block devices to their places, /, /boot, /home, etc.
    • Run pacstrap.
    • Generate fstab.
    • Chroot.
    • Run post-installation. (See next-step)
    • Unmount and reboot.
  3. Post-Installation
    • Set hostname.
    • Set root password.
    • Generate system locales.
    • Set system time.
    • Generate initial ramdisk.
    • Install a bootloader (grub2), and scan to detect other OS if dual booting.
    • Create administrator account/set password.
    • Give sudo privilege to group 'wheel'.
  4. System Configuration
    • Enable multilib. (if x86_64)
    • Install default packages.
    • Setup basic firewall with iptables.
    • Start system services.
    • Run initial rkhunter scan.
    • Run lm_sensors scan.
    • Install additional packages. (if configured as such)
    • Start services.
  5. User Configuration
    • Generate private-public keypairs for ssh.
    • Install yaourt.
    • install AUR packages.
    • Setup/restore user configurations (git + linkthedots.sh).

Checkout on Github.

/clinss-fire13/

CL!NSS @ Fire'13


MSc Dissertation and submission for CL!NSS task at FIRE'13.

Paper: Set-based Similarity Measurement and Ranking Model to Identify Cases of Journalistic Text Reuse.

A little bit about our approach, we first convert the English text to Hindi with Google Translate, and extract four word-groups from the text, as seen below...

  • title - The document title
  • content - The content of the article
  • unique words - in content (also called fingerprint, as it can uniquely identify the document)
  • frequent words - an amount of words that appear most frequently in the document.

These four groups, along with their publication dates, are compared with each document in the hindi corpus and a weighted combination of these five individual similarity scores determines an overall amount of similarity between the english text and hindi text. The documents are ranked according to their final score, and a relevance table is prepared that can be checked with the provided perl script and qrel file to check the accuracy of the system.

We were placed 3rd by organization, with best scores of:
NDCG@1 - 0.6600, NDCG@5 - 0.5579, NDCG@10 - 0.5604.

Although this system is made mainly to be merely a filtration process to determine a list of potential candidates that can be checked by more resource heavy processes, it seems there exists definite room for improvement.

Checkout on Github.

/mbusb/

Multi-Boot USB


One USB to rule them all.

This project allows more than one Operating System to boot from a single USB, currently only Linux/Unix based ones. Very helpful to distro-hoppers, but supports a bunch of system tools to reset, clean, image, or maintain systems that experienced users might find useful as well.

This is a popular method to boot multiple LiveCDs or Bootable versions of systems off of a FAT32 (vfat) formatted USB drive, and there is no limit on the number of OSs, as long the USB does not run out of space. The bootloader used here is grub2,for booting the ISOs in loopback mode.The USB can boot both x86 and x86_64 architecture ISOs, however if the CPU architecture does not support 64bit addressing scheme, the 64bit option is automatically hidden in the boot menu.

List of supported OS(s):

  • Android x86
    • 4.4 RC2
  • GNU/Linux
    • Arch Linux 2014.08.01
    • Debian Wheezy
    • Linux Mint 17 Quiana
    • GRML 2014.03
    • Ubuntu 14.04
    • Kali Linux 1.0.7
  • Tools
    • SystemRescueCD x86 4.2.0
    • GParted Live 0.18.0-2
    • Clonezilla Live 20140331
    • DBAN 2.2.8
    • Memtest86+ 5.01

Checkout on Github.

Web Apps


These are some miniapps that I made while learning Javascript, mostly for personal use but also as progress markers. (The apps are only tested working in current versions of Mozilla Firefox and Chromium, so they might break in other browsers but lets hope they don't.)

Homepage

This is my browser homepage, served either from github or locally from my home server, for easy access to the same links on every device. Also, the multi-search bar can search a number of sites by using prefixes, and has a number of feed boxes to fetch and display news or updates via RSS feeds from multiple sites, made using pure javascript and Google Feeds API.

Checkout Demo or on Github.


ParseMD

Simple markdown to HTML parser using Marked.js.

Features:
  • Convert-as-you-type.
  • Upload markdown to parse.
  • Save markdown as file after edit.
  • Preview HTML.
  • Download parsed HTML.
  • Quick and Offline-friendly.

Checkout Demo or on Github.


geminiBlog

Static blog app written in vanilla Javascript displaying entries written in markdown, converted at the client-side into valid HTML using Marked.js. Currently being used as my own blog.

Features:
  • Minimal and lightweight.
  • Mobile ready.
  • Only server side service needed is storage access.
  • Can be hosted anywhere statically.
  • Markdown driven, very little technical/coding knowledge required to use.

Checkout Demo or on Github.

/rpi/

Raspberry Pi


I've been an owner of a Raspberry Pi Model B since late 2012, and over the years I've done some pretty cool (or sometimes nasty) stuff to it, and still now its happily running a small development (nginx/uwsgi/django stack) server along with dns service, private git repo, IRC/Mumble server and file storage service, which can be partially accessed or administered from the internet. I think its time I begin to document/gather information that might help those who need it. Plus I can just copy stuff off here when I reset it which is more often than I would like to admit.

[Finally setup my blog, using my own single page static blogging app geminiBlog, now you can check out the posts below from this site only.]

Optimizing kernel parameters

Basic firewall configuration with iptables

Local Caching DNS Server with PDNSD

Dynamic DNS service (with dnsdynamic.org)

Personal GIT server

Use SSL with Nginx

Backup over SCP(gist)

/gists/

Scripts


Recently cleaned up my gists and removed all but only the scripts/code-snippets that are actually useful without heavy modification.

Currently it contains:
libnotify-skype.sh Alternate notification system for Skype4Linux that uses libnotify rather than using skype's own notification system.
awsetbg.sh Used to set the wallpaper in my system, as well as generate shell colors, and theme colors for maximum Awesomeness. Uses the mkpng.py to crop the wallpaper, and colors to extract the dominant the colors from the wallpaper.
tses.sh A minimal session manager for TMUX loading preconfigured session instantly rather than creating and splitting each window by hand.
mkpng.py A wallpaper cropper to center crop any wallpaper to current screen size (linux only). Can also be used as a thumbnail generator.
ipup.sh My ISP does not support linux with their web authentication software, so I wrote this litte script as a cron entry to login/logout using their webAPI. Also has a neat little IP chooser that automatically logs out/logs back in if the IP does not match the desired pool.
chatbox.py Minimal text-based discussion board written using http.server in python3. Single threaded, auto refreshes. Exactly 100 lines of code.
tbkp.sh Tar-based backup script to perform once or incremental backups, can select snapshots(if available) when backing up or restoring.
gfeed2js.js Simple RSS feed parser using only Javascript and Google Feeds API. (used in my custom browser homepage)
deduplicate.py Simple file duplicate detector and (re)mover using SHA1 hashing (python2.7)
linkthedots.sh Copies/moves various files from its own backup dir, to their proper places. (Mostly used to backup/push dotfiles to their own places)
getter_media.sh Recursively fetch movie/character/name IDs from the mothership. Update: Fetch actual information (JSON/XML) from MyAPIFilms.
passgen.sh Very High entropy obfuscated memoryless password generator. (Using SHA1 hashing and base64 encoding.)
cryptmount.sh Simple command-line interface to dm-crypt with LUKS. (So far,create container, decrypt, encrypt, extend)

View all my gists.