<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>Do Know Evil - A Blog by Tyler Mulligan &#187; Application Management</title> <atom:link href="http://www.doknowevil.net/category/application-management/feed/" rel="self" type="application/rss+xml" /><link>http://www.doknowevil.net</link> <description>Tips and Tricks About Computers, Web Development, Linux, the Internet and the Like</description> <lastBuildDate>Sat, 16 Jul 2011 01:25:35 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0.5</generator> <item><title>What Makes ASUS and Android an A+?</title><link>http://www.doknowevil.net/2011/01/20/what-makes-asus-and-android-an-a/</link> <comments>http://www.doknowevil.net/2011/01/20/what-makes-asus-and-android-an-a/#comments</comments> <pubDate>Thu, 20 Jan 2011 02:37:17 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Android]]></category> <category><![CDATA[Application Management]]></category> <category><![CDATA[Computers]]></category> <category><![CDATA[Hardware]]></category> <category><![CDATA[Operating Systems]]></category> <category><![CDATA[Organization]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[ASUS]]></category> <category><![CDATA[eee Pad]]></category> <category><![CDATA[eee Slate]]></category> <category><![CDATA[eee Slider]]></category> <category><![CDATA[eee Transformer]]></category> <category><![CDATA[iPad]]></category> <category><![CDATA[Windows]]></category><guid isPermaLink="false">http://www.doknowevil.net/?p=964</guid> <description><![CDATA[ASUS has vision, and the eeepc is no doubt a standard setting line of netbooks. Their latest teaming of Android with their latest tablets, eee Pad transformer and the eee Pad Slider provide both ASUS and users with a lightweight familiar system.  It may also be using the same operating system as their phones, possibly]]></description> <content:encoded><![CDATA[<p>ASUS has vision, and the <a href="http://eeepc.asus.com/" target="_blank">eeepc</a> is no doubt a standard setting line of netbooks.  Their latest teaming of <a href="http://www.android.com/" target="_blank">Android</a> with their latest tablets, <a href="http://www.youtube.com/watch?v=CWicMJgOPlk&amp;t=1ms30" target="_blank">eee Pad transformer</a> and the <a href="http://www.youtube.com/watch?v=CWicMJgOPlk&amp;t=2ms30" target="_blank">eee Pad Slider</a> provide both ASUS and users with a lightweight familiar system.  It may also be using the same operating system as their phones, possibly other devices.</p><p>With <a href="http://www.google.com/chromeos/">ChromeOS</a>, Google is also covering a server-side focused solution to a consumer&#8217;s needs.  We see <a href="http://www.infoworld.com/d/mobilize/webos-and-blackberry-are-running-out-time-what-can-they-do-576" target="_blank">Blackberry <i>trying</i> out a similar solution with WebOS</a>, ASUS however, is focusing on hardware, as usual and doing an impressive job, as usual.</p><p>They don&#8217;t completely shy away from Windows either, with the Eee Slate running the most impressive hardware, it should be interesting to see how Microsoft holds onto their market being a direct competitor of the iPad.</p><p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="853" height="510" src="http://www.youtube.com/embed/CWicMJgOPlk" frameborder="0" allowFullScreen></iframe></p><p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="853" height="510" src="http://www.youtube.com/embed/4Zg6AvI2tBE" frameborder="0" allowFullScreen></iframe></p><p>ASUS doesn&#8217;t forget it&#8217;s stake in the software portion of this emerging market, no. They&#8217;ve invested in a &#8220;cloud&#8221; for consumers information to be separate from their phones and separate from their carrier.  Their information is stored and accessible via their device(s) as an app or <a href="http://access.asus.com" target="_blank">access.asus.com</a>.  Now all they need to do is invest in a short domain name, <b>ax.as.us</b>.</p><p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="853" height="510" src="http://www.youtube.com/embed/OwEnkatnQ-U" frameborder="0" allowFullScreen></iframe></p><p>Other Points, these are cool:</p><p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="853" height="510" src="http://www.youtube.com/embed/YiyOs86WiBw" frameborder="0" allowFullScreen></iframe></p><p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="510" src="http://www.youtube.com/embed/8Xp9fV8DJYs" frameborder="0" allowFullScreen></iframe></p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2011/01/20/what-makes-asus-and-android-an-a/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Customizing Colors for Your .bashrc</title><link>http://www.doknowevil.net/2010/10/21/customizing-colors-for-your-bashrc/</link> <comments>http://www.doknowevil.net/2010/10/21/customizing-colors-for-your-bashrc/#comments</comments> <pubDate>Thu, 21 Oct 2010 08:20:35 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Application Management]]></category> <category><![CDATA[Bash]]></category> <category><![CDATA[Command Line]]></category> <category><![CDATA[Computers]]></category> <category><![CDATA[Javascript]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[OSX]]></category> <category><![CDATA[Operating Systems]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[open source]]></category> <category><![CDATA[colors]]></category> <category><![CDATA[customization]]></category> <category><![CDATA[ps1]]></category> <category><![CDATA[Ubuntu]]></category><guid isPermaLink="false">http://www.doknowevil.net/?p=830</guid> <description><![CDATA[I&#8217;m working on organizing my dotfiles and part of that process has led me to clean up the way I address colors. I came across a few good sources, for .bashrc colors and decided it&#8217;d be better to create my own. I would like to have used the ones I found on the Arch wiki]]></description> <content:encoded><![CDATA[<p>I&#8217;m working on organizing my <a title="dot files for linux and unix bashrc, bash_aliases and application configuration files" href="http://github.com/z/dotfiles" target="_blank">dotfiles</a> and part of that process has led me to clean up the way I address colors.  I came across a <a title="for bashrc colors" href="http://tldp.org/LDP/abs/html/sample-bashrc.html" target="_blank">few good sources</a>, <a title="few good sources" href="http://wiki.archlinux.org/index.php/Color_Bash_Prompt" target="_blank">for .bashrc colors</a> and decided it&#8217;d be better to create my own.  I would like to have used the ones I found on the Arch wiki but the aliases were a bit odd to me.  They also break consistency as you scroll down.  I&#8217;m not sure if this is due to it being a collaborative wiki or it&#8217;s a way to teach multiple syntaxes/approaches.  In either case I figured the aliases weren&#8217;t as &#8220;standard&#8221; as I thought they might be in that world.</p><p>So I decided to copy them the best of the bunch into geany and modify them with regular expressions.  I used column selection to speed up some of the tasks, such as Title Case formatting and typing the prefixes.</p><pre class="brush:bash"># define colors
Black=&#039;\e[0;30m&#039;    # Black / Regular
Red=&#039;\e[0;31m&#039;      # Red
Green=&#039;\e[0;32m&#039;    # Green
Yellow=&#039;\e[0;33m&#039;   # Yellow
Blue=&#039;\e[0;34m&#039;     # Blue
Purple=&#039;\e[0;35m&#039;   # Purple
Cyan=&#039;\e[0;36m&#039;     # Cyan
White=&#039;\e[0;37m&#039;    # White

BBlack=&#039;\e[1;30m&#039;   # BBlack / Bold
BRed=&#039;\e[1;31m&#039;     # BRed
BGreen=&#039;\e[1;32m&#039;   # BGreen
BYellow=&#039;\e[1;33m&#039;  # BYellow
BBlue=&#039;\e[1;34m&#039;    # BBlue
BPurple=&#039;\e[1;35m&#039;  # BPurple
BCyan=&#039;\e[1;36m&#039;    # BCyan
BWhite=&#039;\e[1;37m&#039;   # BWhite

UBlack=&#039;\e[4;30m&#039;   # UBlack / Underline
URed=&#039;\e[4;31m&#039;     # URed
UGreen=&#039;\e[4;32m&#039;   # UGreen
UYellow=&#039;\e[4;33m&#039;  # UYellow
UBlue=&#039;\e[4;34m&#039;    # UBlue
UPurple=&#039;\e[4;35m&#039;  # UPurple
UCyan=&#039;\e[4;36m&#039;    # UCyan
UWhite=&#039;\e[4;37m&#039;   # UWhite

BGBlack=&#039;\e[40m&#039;    # BGBlack - background
BGRed=&#039;\e[41m&#039;      # BGRed
BGGeeen=&#039;\e[42m&#039;    # BGGreen
BGYellow=&#039;\e[43m&#039;   # BGYellow
BGBlue=&#039;\e[44m&#039;     # BGBlue
BGPurple=&#039;\e[45m&#039;   # BGPurple
BGCyan=&#039;\e[46m&#039;     # BGCyan
BGWhite=&#039;\e[47m&#039;    # BGWhite

NC=&#039;\e[0m&#039;          # Text Reset / No Color</pre><p>Here is a test case:</p><pre class="brush:bash">for c in {,B,U,BG}{Black,Red,Green,Yellow,Blue,Purple,Cyan,White}; do echo -e ${!c}$c${NC}; done; echo -e &quot;${NC}&quot;</pre><p>Here is the same test case without the aliases</p><pre class="brush:bash">for c in {0,1,4}\;{30..37} {40..47}; do echo -e \\e[${!c}${c}m${c}m\\e[0m; done;</pre><p>Here's a PS1 you can try it with</p><pre class="brush:bash">PS1=&quot;${debian_chroot:+($debian_chroot)}\[${BWhite}\]\u\[${NC}\]\[${Yellow}\]@\[${White}\]\h\[${NC}\]:\[${BBlue}\]\w\[${NC}\]$ &quot;</pre><p>I plan to use these quite often as I build out my .bash_aliases but the most immediate use you might find useful is the PS1 generation tool I&#8217;ve setup an alpha of <a href="http://interwebninja.com/ps1-o-matic">http://interwebninja.com/ps1-o-matic/</a></p><p><a href='http://www.doknowevil.net/wp-content/uploads/2010/10/ps1-o-matic-0.5.ogv'>ps1-o-matic-0.5 video in action</a></p><p><img src="http://www.doknowevil.net/wp-content/uploads/2010/10/screenshot383-300x29.png" alt="" title="screenshot383" width="300" height="29" class="alignnone size-medium wp-image-842" /><br /> <img src="http://www.doknowevil.net/wp-content/uploads/2010/10/screenshot384-300x30.png" alt="" title="screenshot384" width="300" height="30" class="alignnone size-medium wp-image-841" /><br /> <img src="http://www.doknowevil.net/wp-content/uploads/2010/10/screenshot386-300x28.png" alt="" title="screenshot386" width="300" height="28" class="alignnone size-medium wp-image-839" /><br /> <img src="http://www.doknowevil.net/wp-content/uploads/2010/10/screenshot387-300x41.png" alt="" title="screenshot387" width="300" height="41" class="alignnone size-medium wp-image-838" /></p><p>Below is a screenshot of how I&#8217;m revising the script to use only javascript objects rather than relying on html inputs to store values:<br /> <a href="http://www.doknowevil.net/wp-content/uploads/2010/10/screenshot394.png"><img src="http://www.doknowevil.net/wp-content/uploads/2010/10/screenshot394-1024x581.png" alt="" title="screenshot394" width="1024" height="581" class="alignnone size-large wp-image-866" /></a></p><p>I&#8217;m currently at the point where I&#8217;m using jquery ui&#8217;s draggable and sortable to allow segments to be moved around but I have nothing worth sharing yet.  Stay tuned, I&#8217;ll be checking the source into <a href="http://github.com/z" target="_blank">my github account</a> soon.</p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2010/10/21/customizing-colors-for-your-bashrc/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <enclosure url="http://www.doknowevil.net/wp-content/uploads/2010/10/ps1-o-matic-0.5.ogv" length="4806169" type="video/ogg" /> </item> <item><title>Multiple X (Desktop) Sessions in Ubuntu</title><link>http://www.doknowevil.net/2010/10/13/multiple-x-desktop-sessions-in-ubuntu/</link> <comments>http://www.doknowevil.net/2010/10/13/multiple-x-desktop-sessions-in-ubuntu/#comments</comments> <pubDate>Wed, 13 Oct 2010 23:48:23 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Application Management]]></category> <category><![CDATA[Computers]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[X]]></category> <category><![CDATA[outside the box]]></category> <category><![CDATA[x11]]></category><guid isPermaLink="false">http://www.doknowevil.net/?p=813</guid> <description><![CDATA[This post has a lot to do with graphics but there are no graphics. It&#8217;s a walk-through explanation and and proof of concept of some very interesting features of Linux as a desktop operating system. If you aren&#8217;t familiar with X, than this webpage might confuse you, the X Window System is what draws the]]></description> <content:encoded><![CDATA[<p>This post has a lot to do with graphics but there are no graphics.  It&#8217;s a walk-through explanation and and proof of concept of some very interesting features of Linux as a desktop operating system.</p><p>If you aren&#8217;t familiar with X, <a href="http://www.x.org" target="_blank" title="X.org">than this webpage might confuse you</a>, the <a href="http://en.wikipedia.org/wiki/X_Window_System" title="X11 Window System" target="_blank">X Window System</a> is what draws the GUI (graphical user interface) for Ubuntu.  On top of this, you may have a <a href="http://xwinman.org/" target="_blank">Window Manager or Desktop Environment</a>, such as Gnome (Ubuntu default) or KDE (Kubuntu).</p><p>When you boot up Ubuntu, it creates a set of &#8220;virtual terminals&#8221;.  These VTs are accessible via a key combination of clt+alt+f1-12.  VT7 (ctrl+alt+f7) is the default and it handles X&#8217;s &#8220;screen 0&#8243;. If you play around, with the key combination, you&#8217;ll notice you drop into consoles with a login prompt (f1-6) or a blank screen (f8-f12, <a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/256767" target="_blank">don&#8217;t worry if you see USB errors</a>).</p><p>These virtual terminals used to be handled by X which was slower and more prone to crash (citation needed) but since Ubuntu 8.04, this has been handled by &#8220;<a href="https://wiki.ubuntu.com/X/KernelModeSetting" target="_blank">Kernel Mode&#8221;</a>, where this management is handled by the kernel.  You can switch to another virtual terminal and create another X session.</p><p>Typically in Linux, you could switch to another VT, login [as another user] and type $ <b>startx &#8212; :1</b> (special argument &#8216;<code>--</code>&#8216; marks the end of client arguments and the beginning of server options, :1 defines screen 1).  This will work in Ubuntu but the part where I found it failing was switching between this newly created X session and back to my original :0 on VT7.</p><p>The way I found to do this in Ubuntu seems a bit counter-intuitive.  Before I explain, you should create a new user, if you don&#8217;t have another already.  You can do this by going to System > Administration > Users and Groups.</p><p>To create a second X session in Ubuntu, go to your logout menu (default top right) and select &#8220;switch user&#8221;, and login as another user (you don&#8217;t want to create an error in the user environment).  When you login as another user, Ubuntu creates a screen :1 on VT8.  This means, you can change back to VT7 with ctrl+alt+f7, then back to VT8 with ctrl+alt+f8.  I <i>suspect</i> this is the reason VT8-12 show up as blank screens instead of login terminals.  Ubuntu seems to be leveraging the power of virtual terminals for &#8220;user switches&#8221;.</p><p>I haven&#8217;t noticed much in performance loss doing this and the other big question is practicality.  Why would you ever do this?  Perhaps you are testing software and want isolated test cases or you want a dedicated user for games with a more streamlined window manager and want to be able to flip back and forth.</p><p>Similar areas I came across in my research were <a href="http://en.wikipedia.org/wiki/Xnest" target="_blank">Nested X sessions</a> and <a href="http://en.wikipedia.org/wiki/Multiseat_configuration" target="_blank">Multiseat X</a>.</p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2010/10/13/multiple-x-desktop-sessions-in-ubuntu/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Random gnome-terminal profiles (themes) in Ubuntu</title><link>http://www.doknowevil.net/2010/09/30/random-gnome-terminal-profiles-themes-in-ubuntu/</link> <comments>http://www.doknowevil.net/2010/09/30/random-gnome-terminal-profiles-themes-in-ubuntu/#comments</comments> <pubDate>Thu, 30 Sep 2010 23:20:02 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Application Management]]></category> <category><![CDATA[Bash]]></category> <category><![CDATA[Command Line]]></category> <category><![CDATA[Computers]]></category> <category><![CDATA[GNOME]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[Operating Systems]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Window Management]]></category><guid isPermaLink="false">http://www.doknowevil.net/?p=794</guid> <description><![CDATA[Introduction Does it ever confuse you if you have too many terminals open at once that look alike? Perhaps you&#8217;re just looking to express your personality or tickle your brain. In any case, if you&#8217;re using the terminal in ubuntu a lot, you may be interested in having random profiles (colors / settings). The concept]]></description> <content:encoded><![CDATA[<h2>Introduction</h2><p>Does it ever confuse you if you have too many terminals open at once that look alike?  Perhaps you&#8217;re just looking to express your personality or tickle your brain.  In any case, if you&#8217;re using the terminal in ubuntu a lot, you may be interested in having random profiles (colors / settings).</p><p>The concept of the method is pretty simple, define a hotkey that launches a script that picks a random profile you&#8217;ve created and then open the terminal with that profile as a parameter.</p><h2>Prerequisites</h2><p>- Compiz or other hotkey script that will allow you to link to a .sh file<br /> - gnome-terminal<br /> - bash</p><h2>Getting Started</h2><p>You can figure out what Profiles you have by going to <strong>Edit > Profiles</strong> in gnome-terminal.  You likely only have one, &#8220;Default&#8221;, unless you&#8217;re already actively using terminal profiles.  If you only have one, you should create a few, maybe 3 or 4 right now and play with the colors a bit. <strong>Important, don&#8217;t include spaces in the names of the profiles</strong></p><h2>The Script</h2><p>Create a file in your scripts folder (or create a directory if you don&#8217;t have one):</p><pre class="brush:bash">
mkdir ~/scripts
touch ~/scripts/gnome-terminal.sh &amp;&amp; chmod +x ~/scripts/gnome-terminal.sh
gedit ~/scripts/gnome-terminal.sh
</pre><p>Paste the following replacing the Profile names with those of your own (delimited by spaces) and change the number 4 to that of the :</p><pre class="brush:bash">
#!/bin/bash
p=( Default Delta Psi Sigma )
gnome-terminal --window-with-profile ${p[$((RANDOM%${#p[@]}))]}
</pre><p>That ugly looking bit right here is a calculation between a random number (<strong>echo RANDOM</strong>) and the size of the array (<strong>${#p[@]}</strong>), &#8220;random&#8221; % &#8220;length of array&#8221;.  Where % means mod, or remainder of the division. (examples: 7%4 = 3; 6%4 = 2; 5%4 = 1; 4 % 4 = 0; 4 % 3 = 1; 321%321= 0).</p><p>To illustrate more, play with this code:</p><pre class="brush:bash">r=$RANDOM; echo $r; echo $((r % 4))</pre><p>This is how we get a random index value for the array. This value is nested inside the array ${p[r]}, where r is the random, within bounds, array index.  That array then corresponds with a name of our profile and we pass it as a paramater to gnome-terminal with &#8220;&#8211;window-with-profile&#8221;.  So using my define array above, if the random index were &#8220;1&#8243;, &#8220;Delta&#8221; would be echoed.  If the index were &#8220;0&#8243;, Default would be.</p><h2>The Setup</h2><p>Now, I use compiz with the commands plugin, setting my &#8220;command line 0&#8243; to <strong>~/scripts/./gnome-terminal.sh</strong> and my &#8220;run command 0&#8243; under my key bindings tab to <strong>ctrl+alt+t</strong>, but you can associate this script with anything you&#8217;d like to kick it off.  A shortcut icon for example.</p><p>May this inspire you to understand, extend and share.</p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2010/09/30/random-gnome-terminal-profiles-themes-in-ubuntu/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>The Best Way to Tweet to Twitter, Post on Facebook from WordPress</title><link>http://www.doknowevil.net/2010/07/26/the-best-way-to-tweet-to-twitter-post-on-facebook-from-wordpress/</link> <comments>http://www.doknowevil.net/2010/07/26/the-best-way-to-tweet-to-twitter-post-on-facebook-from-wordpress/#comments</comments> <pubDate>Tue, 27 Jul 2010 02:47:47 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Application Management]]></category> <category><![CDATA[Computers]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web Applications]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[Wordpress]]></category> <category><![CDATA[internet marketing]]></category> <category><![CDATA[ping.fm]]></category> <category><![CDATA[publishing]]></category> <category><![CDATA[social networks]]></category> <category><![CDATA[web]]></category><guid isPermaLink="false">http://www.doknowevil.net/?p=762</guid> <description><![CDATA[I&#8217;ve been focusing some time recently to the foundation levels of Internet marketing. I&#8217;m aiming to increase visibility as strongly as possible at the core of a website giving it the power to leverage evolving trends as simply as possible. This of course means utilizing APIs from other web applications, such as social networks. The]]></description> <content:encoded><![CDATA[<p>I&#8217;ve been focusing some time recently to the foundation levels of Internet marketing.  I&#8217;m aiming to increase visibility as strongly as possible at the core of a website giving it the power to leverage evolving trends as simply as possible.  This of course means utilizing APIs from other web applications, such as social networks.  The title of this post is true but deceptive.  I consider the following method the best way to tweet from WordPress but it&#8217;s actually a whole lot more than that. It&#8217;s a gateway to a large number of social media applications; one account to rule them all. <a href="http://www.ping.fm">ping.fm</a> is a service that allows you to link multiple social network websites, such as <a href="http://www.facebook.com" target="_blank">facebook</a>, <a href="http://www.twitter.com" target="_blank">twitter</a>, <a href="http://www.linkedin.com" target="_blank">linkedin</a> and more.</p><p><a href="http://www.doknowevil.net/wp-content/uploads/2010/07/screenshot241.png"><img class="alignnone size-full wp-image-763" title="ping fm services (minus twitter)" src="http://www.doknowevil.net/wp-content/uploads/2010/07/screenshot241.png" alt="" width="757" height="854" /></a><br /> + twitter</p><p>So the idea then, is to leverage then is to utilize the ping.fm application from your website.  If you&#8217;re using WordPress then you&#8217;re set, <a href="http://wordpress.org/extend/plugins/publish-2-pingfm">the simple no frills publish 2 ping.fm plugin</a> will allow you to interact with ping.fm from your blog/website.</p><p><a href="http://www.doknowevil.net/wp-content/uploads/2010/07/wordpress_ping_fm.png"><img class="alignnone size-full wp-image-764" title="wordpress_ping_fm" src="http://www.doknowevil.net/wp-content/uploads/2010/07/wordpress_ping_fm.png" alt="" width="815" height="818" /></a></p><p>I&#8217;ve tested this out with the free open-source GPL First Person Shooter, <a href="http://www.xonotic.org" target="_blank">Xonotic</a> and a new site I just started <a href="http://www.dumbtubes.com">dumbtubes.com</a>.  Both have twitter accounts that you can see publishing <a href="http://twitter.com/dumbtubes" target="_blank">twitter.com/dumbtubes</a>, <a href="http://twitter.com/xonotic" target="_blank">twitter.com/xonotic</a>.  Xonotic also publishes to many other social accounts, see the <a href="http://www.xonotic.org">Xonotic homepage</a> to find other accounts.</p><p>Stay tuned for more wordpress tips.</p><p><strong>WARNING</strong>, this plugin may cause other plugins options panels not to work.  I&#8217;m not sure the cause yet but be aware that it can cause the sub settings of dedicated plugin setting groups to throw access errors.</p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2010/07/26/the-best-way-to-tweet-to-twitter-post-on-facebook-from-wordpress/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Python Multi-head X (Nvidia TwinView / Dual Monitor) Development Notes</title><link>http://www.doknowevil.net/2010/07/05/python-multi-head-x-nvidia-twinview-dual-monitor-development-notes/</link> <comments>http://www.doknowevil.net/2010/07/05/python-multi-head-x-nvidia-twinview-dual-monitor-development-notes/#comments</comments> <pubDate>Mon, 05 Jul 2010 23:29:24 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Application Management]]></category> <category><![CDATA[Computers]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[Operating Systems]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Python]]></category> <category><![CDATA[Software]]></category><guid isPermaLink="false">http://www.doknowevil.net/?p=745</guid> <description><![CDATA[Preface The following development notes were written after researching the underlying handling of dual monitors in the X window system on Linux. I&#8217;ve included a code snippet that I built to help demonstrate behavior and create a proof of concept to show I can determine which monitor a window is on using only python and]]></description> <content:encoded><![CDATA[<h2>Preface</h2><p>The following development notes were written after researching the underlying handling of dual monitors in the <a href="http://en.wikipedia.org/wiki/X_Window_System" target="_blank">X window system</a> on Linux. I&#8217;ve included a code snippet that I built to help demonstrate behavior and create a proof of concept to show I can determine which monitor a window is on using only python and no statically set coordinates.</p><h2>Introduction</h2><p>I mentioned in my previous post that I&#8217;m using an nVidia video card with &#8220;<a href="http://www.nvidia.com/object/feature_twinview.html" target="_blank">TwinView</a>&#8221; software that outputs my video as if it were one screen, which it technically is, one X screen.  This means that the distinction between monitors is not mapped in the X tree, it&#8217;s handled by the window manager. Unlike <a href="http://en.wikipedia.org/wiki/Xinerama" target="_blank">Xinerama</a>, which has an x session per monitor and stitches them together.  Xinerama, however, has is being deprecated in favor of <a href="http://en.wikipedia.org/wiki/RandR" target="_blank">RandR</a> but regardless, TwinView is my choice and is not an option for me to change to.</p><p>With all of that said, the decision to bridge python to c that interfaces with compiz is a deadend and would be better implemented based on the new 0.9.0 C++ api.  It would be nice to be able to return a list of windows from a &#8220;monitor&#8221; object.  However, that&#8217;s beyond my current scope.  I was able to whip up some python that to show that implementing the monitor management in python using the gtk module isn&#8217;t /that/ hacky.  I emphasize because I read some posts that claimed window decorations could be an issue in accurate calculations.</p><h2>Some Code</h2><p>Read the comment on line 2. <a href="http://www.pygtk.org/docs/pygtk/" target="_blank">Learn more about pygtk here</a></p><pre class="brush:python">
#!/usr/bin/python
# Print some information about the X environment, the monitor setup, currently active window and cursor position
import gtk.gdk

screen = gtk.gdk.screen_get_default()
print &quot;X default screen size: %d x %d&quot; % (screen.get_width(), screen.get_height())
print &quot;xid of root window: %d&quot; % screen.get_root_window().xid

monitors = int(screen.get_n_monitors())
print &quot;== %d monitors ==&quot; % monitors
for m in range(0, monitors):
    print &quot; - geometry of monitor %d: %s&quot; % (m, screen.get_monitor_geometry(m))

window = screen.get_active_window()
win_x, win_y, win_w, win_h, win_bit_depth = window.get_geometry()
print &quot;active window on monitor: %d&quot; % screen.get_monitor_at_point((win_x+(win_w/2)),(win_y+(win_h/2)))
print &quot;window geometry (x,y,w,h): %d, %d, %d, %d&quot; % (win_x,win_y,win_w,win_h)

display = gtk.gdk.display_get_default()
pointer = display.get_pointer()
print &quot;cursor position (x, y): %d, %d&quot; % (pointer[1], pointer[2])
print &quot;cursor on monitor: %d&quot; % screen.get_monitor_at_point(pointer[1],pointer[2])</pre><p>thanks to those in #compiz-dev and #python on freenode who helped me come around to create this snippet.  I hope it will help others looking to develop for multi-head setups in Linux.  Please let me know if I missed anything or did something incorrectly, this is new territory for me.</p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2010/07/05/python-multi-head-x-nvidia-twinview-dual-monitor-development-notes/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Compiz 0.9.0 Released &#8211; Completely Rewritten in C++</title><link>http://www.doknowevil.net/2010/07/04/compiz-0_9_0-released-completely-rewritten-in-c-plus-plus/</link> <comments>http://www.doknowevil.net/2010/07/04/compiz-0_9_0-released-completely-rewritten-in-c-plus-plus/#comments</comments> <pubDate>Mon, 05 Jul 2010 02:44:16 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Application Management]]></category> <category><![CDATA[Compiz]]></category> <category><![CDATA[Computers]]></category> <category><![CDATA[Desktop Mods]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[Operating Systems]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[open source]]></category><guid isPermaLink="false">http://www.doknowevil.net/?p=738</guid> <description><![CDATA[I was doing some in depth research / code hacking regarding the support of multi-headed output (dual monitors) on Linux. I won&#8217;t get into details but my video is being output to my monitors as &#8220;one screen&#8221; with a virtual distinctions handled by the window manager. Because of this, figuring out which of the monitors]]></description> <content:encoded><![CDATA[<p>I was doing some in depth research / code hacking regarding the support of multi-headed output (dual monitors) on Linux.  I won&#8217;t get into <a href="http://forum.compiz.org/viewtopic.php?f=89&#038;t=13362" title="managing windows across dual monitors in compiz?">details</a> but my video is being output to my monitors as &#8220;one screen&#8221; with a virtual distinctions handled by the window manager.  Because of this, figuring out which of the monitors you are on isn&#8217;t as straight forward as you might think.  Originally I was looking for a way to access the c functions in compiz through python but that point is now moot (likely for the better).</p><p>The <a href="http://lists.freedesktop.org/archives/compiz/2010-July/003429.html">first unstable release of the Compiz 0.9 series</a>, completely rewritten in C++.  As said, this &#8220;brings a whole new developer API, splits rendering into plugins, switches the buildsystem from automake to cmake and brings minor functionality improvements. This release represents the first developer and tester preview of what will eventually make the 0.10.x stable series. Please note that as such, it is not yet ready for general use as there are a number of known  ssues, regressions and incomplete functionality.&#8221;</p><p>Here is a <b>SLIGHTLY DATED</b> graph I got <a href="http://santiance.com/2009/10/compiz-code-comparison/">from Santiance.com</a>.</p><p><a href="http://www.doknowevil.net/wp-content/uploads/2010/07/compiz_comparison_chart.png"><img src="http://www.doknowevil.net/wp-content/uploads/2010/07/compiz_comparison_chart.png" alt="" title="compiz_comparison_chart" width="776" height="449" class="alignnone size-full wp-image-739" /></a></p><p>This is a really interesting turning point for the project and I&#8217;m glad I came across this while doing my research for multi-head handling in compiz. Knowing where the future lies could drastically change where I put my efforts in developing to support them.</p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2010/07/04/compiz-0_9_0-released-completely-rewritten-in-c-plus-plus/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Blocking Ads Cross-browser and Save Bandwith Using Your Hosts file</title><link>http://www.doknowevil.net/2010/05/26/blocking-ads-cross-browser-and-save-bandwith-using-your-hosts-file/</link> <comments>http://www.doknowevil.net/2010/05/26/blocking-ads-cross-browser-and-save-bandwith-using-your-hosts-file/#comments</comments> <pubDate>Thu, 27 May 2010 01:49:06 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Application Management]]></category> <category><![CDATA[Computers]]></category> <category><![CDATA[Firefox]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[The Internet]]></category> <category><![CDATA[hosts]]></category><guid isPermaLink="false">http://www.doknowevil.net/?p=638</guid> <description><![CDATA[Ethics of blocking ads vs. data mining aside, one of the smartest ways I found to block ads is at http://someonewhocares.org/hosts/zero/ where the author, Dan Pollock has compiled a list of urls, with the help of contributors that all redirect to 0.0.0.0 or 127.0.0.1 (localhost, your machine). By appending this list to your current hosts]]></description> <content:encoded><![CDATA[<p>Ethics of blocking ads vs. data mining aside, one of the smartest ways I found to block ads is at http://someonewhocares.org/hosts/zero/ where the author, Dan Pollock has compiled a list of urls, with the help of contributors that all redirect to 0.0.0.0 or 127.0.0.1 (localhost, your machine).  By appending this list to your current hosts file (or selectively adding parts), whenever your machine attempts to look up a domain name in this list, it will resolved to 0.0.0.0 or your machine.  It will never make a request on the internet to the intended server.  It will never even download the advertisement.</p><p>To take this a step further, you could develop a similar list for your router or DNS server (if you operate it).</p><p>I still use adblock plus on top for missed entries.</p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2010/05/26/blocking-ads-cross-browser-and-save-bandwith-using-your-hosts-file/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Packages for nautilus you wish were installed by default in ubuntu</title><link>http://www.doknowevil.net/2010/05/04/packages-for-nautilus-you-wish-were-installed-by-default-in-ubuntu/</link> <comments>http://www.doknowevil.net/2010/05/04/packages-for-nautilus-you-wish-were-installed-by-default-in-ubuntu/#comments</comments> <pubDate>Wed, 05 May 2010 01:46:27 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Application Management]]></category> <category><![CDATA[Computers]]></category> <category><![CDATA[Freeware]]></category> <category><![CDATA[GNOME]]></category> <category><![CDATA[Operating Systems]]></category> <category><![CDATA[Ubuntu]]></category> <category><![CDATA[open source]]></category><guid isPermaLink="false">http://www.doknowevil.net/?p=550</guid> <description><![CDATA[Intro Thanks to a tip I picked up at Tombuntu about nautilus, after following up on a trick to add files to mocp through nautilus scripts trackback link from Hilltop Yodler (great article), when doing a google search for GiS for nautilus-actions (apt-get install nautilus-actions). I learned about 3 kick ass additions to the nautilus]]></description> <content:encoded><![CDATA[<h2>Intro</h2><p>Thanks to <a href="http://tombuntu.com/index.php/2007/07/12/install-useful-nautilus-menu-items/" title="See code block below" target="_blank">a tip I picked up at Tombuntu about nautilus</a>, after following up on a <a href="http://www.doknowevil.net/2009/11/08/using-nautilus-scripting-abilities-to-integrate-right-click-file-enqueues-with-mocp/">trick to add files to mocp through nautilus scripts</a> <a href="http://www.hilltopyodeler.com/blog/?p=279" title="more tricks to add files to with nautilus">trackback link from Hilltop Yodler (great article)</a>, when doing a google search for <a href="http://images.google.com/imgres?imgurl=http://linux.softpedia.com/screenshots/Nautilus-actions_2.png&#038;imgrefurl=http://linux.softpedia.com/progScreenshots/Nautilus-actions-Screenshot-4311.html&#038;usg=__HIOtTlLu0P59ZnwHEDslrgllk-Y=&#038;h=478&#038;w=610&#038;sz=166&#038;hl=en&#038;start=1&#038;sig2=To1WEzfgc0FLl-hS6ZIqjQ&#038;um=1&#038;itbs=1&#038;tbnid=jucsR2NLXFKcuM:&#038;tbnh=107&#038;tbnw=136&#038;prev=/images%3Fq%3Dnautilus%2Bactions%26um%3D1%26hl%3Den%26client%3Dfirefox-a%26sa%3DN%26rls%3Dcom.ubuntu:en-US:official%26tbs%3Disch:1&#038;ei=tLrgS-bUNcL98Ab0hPmlBw" title="LOL, this url _ What's a GiS for?">GiS for</a> <a href="http://www.grumz.net/?q=node/387" title="Nautilus Actions _ nautilus-actions">nautilus-actions</a> (apt-get install nautilus-actions).  I learned about 3 kick ass additions to the nautilus menu.  I realized <a href="http://fedoraproject.org/" target="_blank">Fedora Linux</a> and <a href="http://www.linuxmint.com/" target="_blank">Linux Mint</a> had some of these in their context menus but didn&#8217;t make the connection to <a href="http://www.ubuntu.com" target="_blank">ubuntu</a> until now.</p><h2>On with the Show</h2><pre class="brush:bash">sudo apt-get install nautilus-open-terminal nautilus-image-converter nautilus-gksu</pre><p>for some kick ass options in the context (right click) menu of nautilus (your default file manager in ubuntu). For more information, check out the tombuntu article I linked above.</p><pre class="brush:bash">pkill nautilus</pre><p>to restart nautilus and have the new packages in your context menu</p><h2>More</h2><p>If you&#8217;re interested in this, you&#8217;ll probably also like <a href="http://www.doknowevil.net/2010/05/04/adding-context-right-click-menu-options-to-nautilus-ubuntus-default-file-manager-with-nautilus-actions">my article about nautilus-actions</a>.</p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2010/05/04/packages-for-nautilus-you-wish-were-installed-by-default-in-ubuntu/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Adding context (right click) menu options to nautilus (Ubuntu&#039;s default file manager) with nautilus-actions</title><link>http://www.doknowevil.net/2010/05/04/adding-context-right-click-menu-options-to-nautilus-ubuntus-default-file-manager-with-nautilus-actions/</link> <comments>http://www.doknowevil.net/2010/05/04/adding-context-right-click-menu-options-to-nautilus-ubuntus-default-file-manager-with-nautilus-actions/#comments</comments> <pubDate>Wed, 05 May 2010 01:46:22 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Application Management]]></category> <category><![CDATA[Computers]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[Operating Systems]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Ubuntu]]></category> <category><![CDATA[open source]]></category> <category><![CDATA[nautilus]]></category><guid isPermaLink="false">http://www.doknowevil.net/?p=562</guid> <description><![CDATA[Intro Previously, I had written about enqueuing files with nautilus scripts. Since then, I have learned (and forgotten about) nautilus-actions. Which is a similar way to attack the issue but it using a more intuitive and decoration approach, as well as having the ability to be on the first level of the context menu hierarchy.]]></description> <content:encoded><![CDATA[<h2>Intro</h2><p>Previously, I had <a href="http://www.doknowevil.net/2009/11/08/using-nautilus-scripting-abilities-to-integrate-right-click-file-enqueues-with-mocp">written about enqueuing files with nautilus scripts</a>.  Since then, I have learned (and forgotten about) nautilus-actions.  Which is a similar way to attack the issue but it using a more intuitive and decoration approach, as well as having the ability to be on the first level of the context menu hierarchy.</p><pre class="brush:bash">sudo apt-get install nautilus-actions
nautilus-actions-config</pre><p>The approach to getting the example of enqueuing files to mocp accomplished is a bit different using this approach as you don&#8217;t need to go through the script as you did before (though you can if you want, it&#8217;s an unnecessary step).  Here, as my screenshot shows, I directly call mocp from /usr/bin with the -a flag and use the $M variable the legend provided me with to pass a list of files and their full paths to mocp.</p><p><a href="http://www.doknowevil.net/wp-content/uploads/2010/05/enqueue-to-moc-with-nautilus-actions.png"><img src="http://www.doknowevil.net/wp-content/uploads/2010/05/enqueue-to-moc-with-nautilus-actions-1024x640.png" alt="" title="enqueue-to-moc-with-nautilus-actions" width="1024" height="640" class="alignnone size-large wp-image-570" /></a></p><p>You&#8217;ll also want to change the conditions on the Conditions tab.  I set it to allow multiple files from both folders and files.  The default is to allow only a single file.</p><p><a href="http://www.doknowevil.net/wp-content/uploads/2010/05/nautilus-actions_conditions.png"><img src="http://www.doknowevil.net/wp-content/uploads/2010/05/nautilus-actions_conditions.png" alt="" title="nautilus-actions_conditions" width="460" height="430" class="alignnone size-full wp-image-571" /></a></p><h2>More</h2><p>This article was inspired by <a href="http://www.hilltopyodeler.com/blog/?p=279">Making Life Easier With Scripts For Nautilus</a>. If you&#8217;re interested in this article, you&#8217;ll probably also like <a href="http://www.doknowevil.net/2010/05/04/apackages-for-nautilus-you-wish-were-installed-by-default-in-ubuntu">my article about nautilus packages you wish were installed by default in ubuntu</a>.</p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2010/05/04/adding-context-right-click-menu-options-to-nautilus-ubuntus-default-file-manager-with-nautilus-actions/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Object Caching 926/1007 objects using disk

Served from: www.doknowevil.net @ 2012-02-04 03:35:20 -->
