take a peek, go vote

the "pre-blog polls", now reside bellow the blog. please jump to the end of the page to have a little vote in them, just for fun. :)

... now, on with the rambling blog!

Thursday, 11 November 2010


Fuck i love linux! (which i now sometimes abreviate to merely "fill"

Fuck i love xmonad!

Fuck i love uzbl!

that last one is new.

:) just started playing around with it for the first time today. ok, not strictly the first time. i poked around fleetingly a couple other times when checking out a bunch of different browsers.

idk what prompted me to check it out again this time... but i'm glad i did.

i am very surprised!

it's now slotted to be the main browser in witch linux methinks. ... ok, it's not actually that small, but it's minimal and elegent, and renders sites really well *coughnetsurfcough*... and it claims to fit the unix philosophy, of an app should do one job and do it well... rather than apps bloating up in feature-lust.

ok, so it's like 55mb install here in arch. :/ it's not exactly small [(by my hardcore standards)], i accept this. there are smaller browsers.

i got my biggest surprise tho when i opened a youtube link... AND IT PLAYED!

i thought for sure a little browser like this wouldnt have such a feature.

it seems they've got it right... build it for the geeks n u will attract the geeks. more geeks in the userbase = more geeks to contribute to the development.

some brief hanging around in #uzbl on irc.freenode.net has given me the impression that it's progressing at pace. features missing 6 montsh ago, now available, and such like.

so anyways, i'm currently running uzbl to write this blog. uzbl-tabbed to be precise. i have my first uzbl youtube link opened in the previous tab. there's still loads n loads of controls i dont yet know in the default config, like how to close tabs (eep! better not go too crazy), but no doubt i'll be considering changing a few keybinds later on, knowing it's a configulurvable unix-philosophy app.

oh, yeah, and this blog entry isnt gonna be jsut for the lovely lovely uzbl...

i'm gonna share my xmonad config now too.
i've now got tiles resizeable by mouse! aw yeah. so if there are any "awesome" noobs out there who were too scared to try a real man's window manager like xmonad, you can try out my config, n see if it apeases your distrust of the keyboard. ^_^ (just some friendly teasing, dont get uppity with me if you're a awesome fanboy wanting to have a go at me for that.)

it's still a work in progress, but it's all i use in arch.

... come to think of it, when i'm in crunchbang10.04LTS (upped from 9.04), or in Toorox (a lovely gentoo-based distro if u dont know), xmonad is all i use in it too. although, still earlier versions of this config in each... with a couple distro-specific changes... like synaptic and porthole keybind.

suffice to say, it's production ready, to my standards. :)

one admission though... i have noticed it's not quite as zippy and responsive anymore as the default xmonad config is. :/ but still a few cuts above the bloated "Desktop Environment" interfaces.

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig(additionalKeys)
import XMonad.Hooks.EwmhDesktops
import XMonad.Config.Desktop
import XMonad.Actions.CycleWS
import XMonad.Layout.MouseResizableTile --and shrink/expand slave layout
import System.IO

-- initially created with help of: http://www.haskell.org/haskellwiki/Xmonad/Config_archive/John_Goerzen%27s_Configuration
-- use "xmonad --recompile" to check it's syntactically correct if making changes (better than just modQ)
-- list of key codes http://haskell.org/haskellwiki/Xmonad/Key_codes
-- may also prove useful for some keys and commands http://hackage.haskell.org/packages/archive/X11/1.4.5/doc/html/Graphics-X11-Types.html

-- also used
-- http://hackage.haskell.org/packages/archive/xmonad-contrib/0.8/doc/html/XMonad-Doc-Extending#Editing_mouse_bindings.html
-- http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Layout-MouseResizableTile.html
---- still need to learn how to change the size of the border gap between tiles now that a 6pixel gap has been adeed. :/

-- yet to be implimented:
-- resizing floating windows from any corner
-- http://hackage.haskell.org/packages/archive/xmonad-contrib/0.8/doc/html/XMonad-Actions-FlexibleResize.html
-- http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Actions-FlexibleResize.html

-- may want to encorporate:
-- http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Actions-GridSelect.html

-- DEFAULT TEMPATE : http://haskell.org/haskellwiki/Xmonad/Config_archive/Template_xmonad.hs_%280.9%29

myManageHook = composeAll
[ className =? "Gimp" --> doFloat
, className =? "pidgin" --> doFloat
, className =? "skype" --> doFloat
, className =? "vlc" --> doFloat
, className =? "tilda" --> doFloat
, className =? "Tilda" --> doFloat
, className =? "Vncviewer" --> doFloat
, className =? "gpicview" --> doFloat
, className =? "Gpicview" --> doFloat
, className =? "BetterPrivacy" --> doFloat
, className =? "Pidgin" --> doFloat
, className =? "Skype" --> doFloat

main = do
xmproc <- spawnPipe "/usr/bin/tint2 /home/digit/.config/tint2/tint2rc" xmonad $ ewmh desktopConfig { manageHook = manageDocks <+> myManageHook -- make sure to include myManageHook definition from above
<+> manageHook desktopConfig
, layoutHook = avoidStruts $ layoutHook defaultConfig { layoutHook = myLayout } --see "myLayout" bellow
, startupHook = spawn "starterscripts"
, modMask = mod4Mask -- Rebind Mod to the Windows key
} `additionalKeys`
[ ((mod4Mask, xK_F2), spawn "gmrun")
, ((mod4Mask .|. shiftMask, xK_F2), spawn "gedit ~/.gmrunrc")
, ((mod4Mask, xK_F3), spawn "~/.config/dmenu/dmenu-bind.sh")
, ((mod4Mask .|. shiftMask, xK_F3), spawn "gedit ~/.config/dmenu/dmenu-bind.sh") -- edit dmenu
, ((mod4Mask, xK_F4), kill) -- close focused window
, ((mod1Mask, xK_F4), kill) -- oldskool close focused window
, ((mod4Mask, xK_F5), spawn "xfce4-appfinder")
, ((mod4Mask, xK_F6), spawn "xkill")
, ((mod4Mask, xK_a), spawn "audacity")
, ((mod4Mask, xK_b), spawn "firefox")
, ((mod4Mask .|. mod1Mask, xK_b), spawn "seamonkey")
, ((mod4Mask, xK_c), spawn "pidgin & skype")
, ((mod4Mask, xK_d), spawn "gedit")
, ((mod4Mask .|. controlMask, xK_d), spawn "gksudo gedit")
, ((mod4Mask, xK_f), spawn "pcmanfm")
, ((mod4Mask .|. controlMask, xK_f), spawn "gksudo pcmanfm")
, ((mod4Mask .|. shiftMask, xK_f), spawn "searchmonkey")
, ((mod4Mask .|. shiftMask .|. mod1Mask, xK_f), spawn "catfish")
, ((mod4Mask, xK_g), spawn "gimp")
, ((mod4Mask, xK_i), spawn "inkscape")
, ((mod4Mask, xK_m), spawn "vlc")
, ((mod4Mask .|. mod1Mask, xK_m), spawn "deadbeef")
, ((mod4Mask .|. controlMask .|. mod1Mask, xK_m), spawn "gedit ~/.config/openbox/menu.xml") -- edit openbox menu
, ((mod4Mask, xK_n), sendMessage ToggleStruts) -- toggle panel visability.
, ((mod4Mask .|. mod1Mask, xK_n), spawn "pkill tint2 && tint2") -- restart panel.
, ((mod4Mask .|. controlMask .|. mod1Mask, xK_n), spawn "gedit ~/.config/tint2/tint2rc") -- edit panel config
, ((mod4Mask, xK_o), spawn "openbox --replace") -- switch to openbox
, ((mod4Mask .|. controlMask .|. mod1Mask, xK_o), spawn "gedit ~/.config/openbox/rc.xml") -- edit openbox config
, ((mod4Mask .|. shiftMask, xK_p), spawn "gksudo gparted")
, ((mod4Mask, xK_p), spawn "gksudo gtkpacman")
-- , ((mod4Mask, xK_q), spawn "xmonad --restart")
, ((mod4Mask .|. mod1Mask, xK_t), spawn "tilda") -- launch tilda
, ((mod4Mask, xK_v), spawn "VirtualBox")
, ((mod4Mask, xK_x), spawn "xmonad --recompile") -- recompile xmonad
, ((mod4Mask .|. mod1Mask, xK_x), spawn "xmonad --restart") -- restart xmonad
, ((mod4Mask .|. controlMask .|. mod1Mask, xK_x), spawn "gedit ~/.xmonad/xmonad.hs") -- edit xmonad config
, ((mod4Mask, xK_y), spawn "conky")
, ((mod4Mask .|. mod1Mask, xK_y), spawn "pkill conky && conky") --restart conky
, ((mod4Mask .|. controlMask .|. mod1Mask, xK_y), spawn "gedit ~/.conkyrc") --edit conky
, ((0, xK_Print), spawn "scrot '%Y-%m-%d--%s_$wx$h_scrot.png' -e 'mv $f ~/images/screenshots/ & gpicview ~/images/screenshots/$f'")
-- , ((modMask, next), nextWS)
-- , ((modMask, prev), prevWS)
, ((mod1Mask .|. controlMask, xK_Left), prevWS)
, ((mod1Mask .|. controlMask, xK_Right), nextWS)
-- , ((mod1Mask .|. controlMask .|. shiftMask, xK_Left), shiftToPrev)
-- , ((mod1Mask .|. controlMask .|. shiftMask, xK_Right), shiftToNext)
, ((mod1Mask .|. shiftMask, xK_Left), shiftToPrev)
, ((mod1Mask .|. shiftMask, xK_Right), shiftToNext)
, ((mod4Mask .|. mod1Mask, xK_h), sendMessage ShrinkSlave) -- %! Shrink a slave area
, ((mod4Mask .|. mod1Mask, xK_l), sendMessage ExpandSlave) -- %! Expand a slave area

myLayout = mouseResizableTile ||| mouseResizableTileMirrored ||| Full
-- default tiling algorithm partitions the screen into two panes
-- tiled = Tall nmaster delta ratio --need to figure out how to correctly impliment this line, if i want to adjust the nmaster, ratio and delta.... and i do very much want to adjust the delta. .. but its not essential, now that i have mouse resize

-- The default number of windows in the master pane
nmaster = 1

-- Default proportion of screen occupied by master pane
ratio = 1/2

-- Percent of screen to increment by when resizing panes
delta = 2/100

so anyways...

i love gnu|linux and xmonad, and now uzbl too.

probably indicative that i dont have a girlfriend right? lol.

Wednesday, 10 November 2010

open source hardware.

i was reading the "200 things you can do with linux" article in the 200th issue celebration collectors edition of linux journal, when i came to #51, "Delete all the GPS location data from images." and i hit upon the idea of doing a search...

the GPS data on cameras has been an issue that's troubled me for some time, in full tinfoil hat mode, i just stopped taking pictures with my phone, knowing what an epic security hole it is, an invasion of privacy and empowers corporations and government agencies with far more knowledge about me and power over me than they deserve.

what was the idea for what i was going to search?
two searches really, open source hardware, and more to the point, open source cameras.

but surely, if i've just read that u can remove this data with linux, why bother finding greater recourse and remedy for avoiding it? quite simply, prevention is better than cure.

and what did i find?

- and the link there-in. http://www3.elphel.com/

i wouldnt mind the GPS data going along with images if it was more public-interest oriented, rather than spy-agency oriented. I even rather like the idea, if it were more forthcoming, noticeably present in the interface, with notification of its presence, and the ability to turn it off. or even make it opt-in, instead of opt-out (which to my knowledge, isnt even an option on most phones/cameras, at least not without a convoluted removal process).

it's like kenedy said, "fully informed public". that's all this is really about.

democracy fails without this. when how something is made is a proprietary secret, it diminishes the power of the people. when it's normal use constitutes secondary secret uses not for the benefit of the user, it diminishes the power of the people. i love the idea of open-source hardware giving back that power. it's like it defeats the dark side of occulted & horded knowledge simply with the light of the freedom of knowledge. :) and we all benefit, even those who were in the dark, from lighting each other's candles. :)