Monday, October 31, 2011

Open Source Project Trac

Trac is an open source, web-based project management and bug-tracking tool. Trac allows hyperlinking information between a computer bug database, revision control and wiki content. It also serves as a web interface to a version control system like Subversion, Git, Mercurial, Bazaar and Darcs.

Open Source Project ProjectPier

ProjectPier is a Free, Open-Source, self-hosted PHP application for managing tasks, projects and teams through an intuitive web interface. ProjectPier will help your organization communicate, collaborate and get things done Its function is similar to commercial groupware/project management products, but allows the freedom and scalability of self-hosting.

Open Source Project Redmine

Redmine is a flexible project management web application. Written using Ruby on Rails framework, it is cross-platform and cross-database. It includes calendar and gantt charts to aid visual representation of projects and their deadlines.

Open Source Project Codendi

Codendi is an open-source collaborative development platform offered by Xerox. From only one interface, it gathers, all the needed tools for software development teams: management and versioning of code, bugs, requirements, documents, reporting, tests etc. It is mainly used for managing software project processes.

Wednesday, September 14, 2011

AdaptCMS 2.0 Released

Insane Visions has announced the major release of AdaptCMS 2.0, available now for download!

Although, unfortunately, many delays the biggest version since the very first version of AdaptCMS features a whole new look, completely re-written and brand new features. The template system was one of the major changes, introducing smarty to power the system instead of the in-house setup. This enables template caching, more tagging and an overall better experience.

Another major overhaul over 1.5 was the media, formerly known as "Gallery", feature. The admin side of things it looks completely different but is organized in a much user friendly way, but has even more functionality than before. In the frontend media features like videos is possible as well as on the fly slideshows.

There's really too much new and improved things to mention here, but among a few of the big ones is a very nifty File Release system, letting you download the latest AdaptCMS files right from your administrative panel. Not only that, but you can select from multiple releases and see notes on a file being updated - important for security or bugs. Social is also a major new feature in AdaptCMS featuring things like messages, a friends list, a personal blog, twitter-like status and more.

That's just the tip of the iceberg, but in traditional AdaptCMS fashion 2.0.0 continues and achieves it better as a CMS that can be used for any website with customization in every aspect so you can create the website you want.

Wednesday, June 8, 2011

3G Wireless Reading Device Review

Amazon Kindle.2



Overall I feel that the Kindle is just as good if not better than other E-Books such as the Sony E-Reader and iPhone E-Book Apps, as it doesn’t boast hundreds of different features but gets straight on with the job. With a whole month of battery life its an incredible unit, especially for those who like to have a daily read. Not only can you store up to 3500 books, but, they cost as little as 72pence each!


After reviewing the Archos 101, people were coming to me asking to review the Amazon Kindle! This product was an exclusive to the USA but has since been released to the UK. The more expensive model, which includes a free 3G connection to the Kindle store costs £139 and the Wi-Fi only model costs around £109.


What’s in the Box


The box contains:-


- Power Adapter


- USB 2.0 cable


- Rechargeable Battery


- Quick Start Guide


Amazon Kindle Package


Physically, the device is a little slimmer than its predecessor. Amazon has achieved this by reducing the size and thickness of the bevel and removing the row of number keys from the keyboard. The keyboard itself is a rudimentary affair that is, thankfully, only used during setup and for book searches, other than that I don’t see the need for having it.


Amazon Kindle


The rear mounted speakers are surprisingly effective, though. Page turn buttons are mounted on the left and right, with forward and back replicated on both sides so you can turn pages one handed. This proved to be quite useful, however, after using the iPad and Archos 101, the touchscreen seemed that little bit better, allowing me to slide the page across rather than press the button. The device itself cuts no corners and does exactly what you would expect. The latest Kindle looks almost identical as its predecessor minus the few cosmetic changes.


However, Amazon have tweaked the performance by increasing storage to over 3GB, improving the clarity of the display and increasing the refresh rate for a better experience. The Kindle uses the new E Ink Pearl panel, and it’s just as comfortable on the eyes as words on a page. The Kindle can even be used in direct sunlight without the need to move around for a better/clearer picture. Not that I have used it in direct sunlight as of yet, but I’m sure to be taking it on holiday with me this year!


Specifications


Display Size
6" diagonal


Display Type
E Ink Pearl


Size
7.5" x 4.8" x 0.335"


Weight
8.7 ounces


Storage
3,500 books


Battery Life                                                                                          1 month


The bottom edge of the device sports a volume control and 3.5mm headphone jack along with a micro USB connector for both charging and data transfer. The latest Kindle does not boast a touchscreen feature, nor do Amazon plan on adding this to future releases. I think the Kindle would benefit from touch screen as I find it easier to just flick the screen to change page.


Battery life is quoted at up to one month with wireless turned off. In the real world, however, Amazon encourages you to keep it switched on so you can store the furthest point reached in a book. However, with internal bookmarks I didn’t see the need for leaving the wireless on. A month of battery life is superb! Considering I charge my iPhone every day!


Amazon has clearly been working hard at improving the book buying process. Order a Kindle and, on delivery, you’ll find it’s been automatically linked to the Amazon account used to buy it. Its simple to buy books and there’s plenty of choice, too, with the UK Kindle store now boasting more than 400,000 titles.


At the time of writing, all of the top ten books were available in Kindle form, many of them at an impressive discount. Stephen Fry’s “The Fry Chronicles”, for example, costs £6.54 in its digital version compared with £9.35 in hardback and this despite the fact that eBooks are subject to VAT. The joy of a device like this is being able to download the entire works of Charles Dickens for 72p and hardly notice the difference in storage available. 72p for that many books will save the user a lot in the long run! The buying process is simple! Find the book, then click Buy! Then automatically the book is saved to the Kindle.


Summary


Overall I feel that the Kindle is just as good if not better than other E-Books such as the Sony E-Reader and iPhone E-Book Apps, as it doesn’t boast hundreds of different features but gets straight on with the job. With a whole month of battery life its an incredible unit, especially for those who like to have a daily read. Not only can you store up to 3500 books, but, they cost as little as 72pence each!

Tuesday, June 7, 2011

Garmin ecoRoute HD Onboard Computer Review

ecoRoute HD


Lemon Digital                           Lemon Logo      The cheapest satellite navigation from TomTom, Garmin and every other brand, PDA system and digital picture frames



After using the Garmin ecoRoute HD for 2 weeks I found that overall I did save a few pennies and that I did manage to cut down my daily miles. I think that if I would have used the ecoRoute HD for a whole year then it would have had a far greater impact and I would have saved a decent amount. Not only have I cut down the miles on my vehicle but I have also lowered my carbon footprint.


After the highly anticipated release of the Garmin ecoRoute HD i was wondering what all of the fuss was about. So I contacted our good friends Lemon Digital to see whether or not they had these in stock, they had plenty and offered to give me one to review to see what I thought about it.


What Does the ecoRoute Do?


The Garmin ecoRoute HD Onboard Computer is used to help improve Garmin Nuvi users fuel consumption and help the users to reduce their negative impact on the environment. The ecoRoute also specialises in:

Engine Monitoring Fuel Efficiency Car Diagnostics

The ecoRoute also offers Sensor and Gauge Data to help you keep track on everything ranging from your RPM to your Coolant Temperature.


ecoRoute HD.3


The users of this relatively cheap accessory should earn their money back within a year with the amount of fuel saved. This is a rough estimate based upon the amount I think that I saved throughout the two weeks of usage.


Compatible Garmin Units


After looking into the Garmin ecoRoute everyone was listing that it was only compatible with a select few Sat Navs. However, once I received the package it seemed to state otherwise. The package read that it was compatible with the following:


That is quite a lot more than what Garmin were originally saying on their official website. So i gave them a call and they confirmed that it is compatible with the list that i gave them and what was on the back of the package. In a nutshell, the ecoRoute HD is compatible with nearly all of the Garmin Nuvi units.


Whats in the Box


This is what you get in the box:

Garmin ecoRoute HD Instructions Manual 4 Cable Ties 2 Self Adhesive Stickers

Here’s an Image of what i received:


DSC01599


The box that the ecoRoute comes in is classic Garmin. A solid cardboard box with all of the glossy images that you would expect, including the compatibility list on the back of the box.


Installation


Once I went through the box and read the Instructions manual i was still unclear on how to install the device to my vehicle. Unlike most other Garmin units this wasn’t as straight forward as I would have thought. I looked in my vehicle for the “OBD II Connector” only to realise I didn’t have a clue what it looked like nor did i know where to find it. The manual did give me a brief image of what it looked like and it told me to search the web for images of it.


I went onto the internet and then onto YouTube to find out exactly how to do it! Once I watched a video on YouTube it was Simple! The Connector was located right in my footwell below the steering column.


After I Installed the ecoRoute i asked myself whether or not it is compatible with all vehicles?


Vehicle Compatibility


I quickly surfed the web to see if anyone had experienced any problems with the ecoRoute HD and whether or not it is compatible with all cars. I couldn’t really find a lot of information about the ecoRoute, maybe this was because its a new product. There wasn’t a lot on the internet to answer my question. So once again, I phoned Garmin to ask them. They were very helpful and gave me a list of vehicles that it wont work with:-

1996 Dodge Intrepid 2000 Ford F350 7.3L Turbo Diesel 2003 Subaru Forester Renault Vehicles

Renault were the surprising incompatible vehicles on the list. A market leader which will have a detrimental impact on the sales of these units.


Summary


After using the Garmin ecoRoute HD for 2 weeks I found that overall I did save a few pennies and that I did manage to cut down my daily miles. I think that if I would have used the ecoRoute HD for a whole year then it would have had a far greater impact and I would have saved a decent amount. Not only have I cut down the miles on my vehicle but I have also lowered my carbon footprint.


I was however, slightly bewildered as to why it is not compatible with Renault vehicles. I am guessing its because the OBD Connector II is situated in a non suitable spot, near the pedals maybe?

Vexia Econav 380 Sat Nav Review

Vexia Econav 380 This review looks at the Vexia Econav 380 Sat Nav.  Vexia is a name you might not immediately associate with the sat nav market, it is a Spanish brand developed in 2008 to encourage eco friendly GPS navigation.


The Vexia Econav works like any traditional GPS navigator, but with features built-in to encourage you to drive more economically and thereby save money on your fuel bills.


The eco market is an area several manufacturers have moved into over the last 18 months, both Garmin and TomTom have developed systems which allow a user to navigate using the most fuel efficient route.


Vexia take this a step further.  Not only can it calculate the most fuel efficient route, but it also provides visual and voice instructions indicating when to change gear.


It does this by storing the vehicle profiles of over 11,000 models of car.  You simply select your car model and make when first setting up the system.


In addition to giving instructions on when to change gear, it also provides visual warnings if you accelerate or brake too quickly, as well as displaying the safe stopping distance based on current speed.


We reviewed the Vexia Econav 380.  There is also an Econav 480 if you prefer a widescreen version.  Both the 380 and 480 ship with either UK and Ireland mapping, or for a higher price European mapping.


Vexia Econav 480


We tested the Vexia on the same routes we use when reviewing other GPS systems.  On the whole it performed pretty well, selecting appropriate routes.


Route recalculation when taking a wrong turn worked well most of the time, although on one occasion it got completely messed up, first telling us to turn right onto a dirt track, and when we ignored that instruction it told us to turn left into a caravan park.


The Vexia displays the speed limit of the road you’re driving on and in our tests it did an excellent job.  The correct speed was displayed on all the routes we selected.


Vexia Econav 380   Vexia Econav 380


There were a number of issues we did run into whilst testing, none of these were major, but they are areas we’d like to see improved:

There is no visual or audible warning if you take a wrong turn, the system will silently recalculate the route for you.  If you’re quick and glance down at the screen you will see a progress bar as it recalculates the route, but it is very easy to miss that.  We’d like some kind of warning when taking a wrong turn. We couldn’t enter a destination until a satellite signal was established.  This can be particularly annoying if you want to check or program a route indoors before a journey.  Other manufacturers provide an “offline” mode where you can calculate a route without a satellite signal. We found the screen too small.  The information bar displayed at the bottom of the screen showing details like time of arrival and current speed was too small to read.  It’s possible things are slightly better on the Econav 480 which has a wider screen, but we feel the display needs redesigning to improve readability. The left hand side of the econav screen tries to convey too much information in our opinion making the screen look cluttered and unreadable.  The right hand side of the screen looks much better. 

We also found ourselves looking at the screen more often than a traditional GPS navigator to read this information, which could prove a distraction when driving.  Sometimes less is more, and we’d like to see less information on this screen.

At slower speeds, such as driving in urban areas, you may find the Econav is continually asking you to change up and down gear.  In our tests we were driving at 30mph in a built-up area, and it kept asking us to change up to 4th and then back down to 3rd, since our speed was drifting a couple of mph either side of what it felt was time to change gear. This got a bit annoying after a while.

We tested the Econav 380 on a 2007 Honda Civic 1.8 Sport, which itself includes a series of lights on the dashboard that indicate efficient driving, so it provided a good comparison with the Econav 380.


Overall it did a decent job of telling us when to change gear.  Of course the Vexia has to use satellites to compute your speed, so you may find a 1-2 second delay before it realises you need to change gear.


There are times when the gear change instructions don’t make sense, for example when driving up or down a hill it makes sense to stay in a lower gear, so on these occasions it is best to ignore what the Vexia suggests.


The Econav 380 provides a nice series of reports where you can view how efficiently you’ve driven for a particular day, week, etc.


Econav 480 reports 


Safety camera warnings are pre-installed and in our tests it worked fine with fixed cameras.  We did not get an opportunity to test whether it will detect mobile or red light cameras.  Safety camera updates are available from Vexia.


Vexia Econav Safety Cameras


The points of interest (POI) was surprisingly good, offering a good selection of categories and providing accurate listings for our local area.


The Vexia Econav is an innovative looking device with some nice features to encourage more eco friendly driving. 


As a navigational device we’d still recommend either Garmin or TomTom, both perform better overall, although the Vexia is not far behind.  Some people could also argue that driving sensibly is common sense, most people already know that if you don’t accelerate or brake too hard you can save fuel, you don’t need really need a GPS device to tell you that.  So we’re not totally convinced this device will catch on.


There is a move to making GPS devices more eco friendly though, and this device offers some potential and advantages over the likes of Garmin and TomTom in this department.  If Vexia continue to be creative and innovative in this marketplace this could be a device to watch.

LG GW620 Android Phone Review

For the last few weeks we’ve been playing with the LG GW620, the first Android phone from LG.  Here is our quick review on how we got on.

Summary
LG GW620The LG GW620 is a decent entry into the Android phone market.  The Google integration is excellent and there are a large selection of free applications you can install.

It needs a more responsive touch/slide interface, a larger screen, improved browser and an upgrade on the installed Android 1.5 firmware.

If LG can improve these areas this would become a very attractive phone.

Out of the box the phone looked good and of a decent build quality, nothing too flimsy and the phone looked like it would survive a few knocks and bumps quite easily.

The phone was a bit chunkier than we were expecting but nothing excessive, the phone easily fits in the palm of your hand.  Considering the slide out keyboard the overall dimensions of the phone are pretty good.

The touch/slide interface at times is fiddly to use, and is not as responsive as the iPhone interface.  You have to press the screen quite firmly before you can scroll the screen.  This can make it difficult when navigating a list of options, you can end up selecting an item from a list when all you want to do is scroll down the list.

Our other minor niggle was the proprietary USB port on the phone.  For a phone that is trying adopt open standards we would have liked a standard USB port like those used on other devices like digital cameras for example.

Other phone manufacturers are equally to blame in this area but it would be nice to see some standards between manufactures here.  It certainly would save having different flavours of USB cable scattered around your home.

We were disappointed to find that under the covers the LG GW620 is only running Android 1.5 (Cupcake).  We would have preferred an Android 2.0 phone.  The 2.0 version is better, more robust and provides a greater selection of applications.

GW620-2

Since this is an Android phone the integration with Google services such as GMail and Google Maps is excellent.

GMail contacts can be synchronised with the phone.  This can provide a very powerful contacts management system on the phone, especially if you hold information like a person’s address and web site within your GMail contacts list.  You can select a contact on the phone, click on their address and Google Maps will automatically start up and show you their location on a map.  Click on a person’s web site URL and the browser will display their web page.

There are a good number of applications available, both free and non-free, via Android Market, such as the BBC iPlayer.  Android Market works pretty much the same way as the iTunes store does on an iPod, just search for an application and install it on your phone.

GW620-6

The LG GW620 provides good integration with social network sites like Facebook and Twitter.  Twitter applications like twidroid can be downloaded from Android Market.

The built in browser worked well in our tests.  Web pages don’t render as well as the iPhone and the LG screen size could do with being a bit larger, but it’s not a bad effort.

Text messaging works slightly different than some other phones.  Text messages are displayed on screen as if you were having an instant message conversation with a person, which can make tracking conversations easier.

The keyboard on this phone is pretty decent overall, it is easy to use and keys were just about sufficiently far apart to avoid hitting the wrong keys.

gw620-keyboard

Our only gripe was the delete key positioned directly above the enter key.  We had a tendency to press the enter key by mistake on a number of occasions, this was most annoying when performing tasks like updating your Facebook status.  The result being a half finished sentence posted to Facebook.

The LG GW620 sports a 5 megapixel camera with a good selection of options available to tweak items like exposure and metering mode.  The quality of photos taken with this phone was very good too.

Overall this a decent phone from LG with some really nice features, but it needs to improve in several areas before we would consider buying one.

If LG can provide an Android 2.0 phone with a touch/slider interface to rival the iPhone then we’d seriously consider buying one.

Buy the LG GW620 from Amazon.

Google integration excellent Good selection of applications from Android Market Decent sized QWERTY keyboard Good 5mp camera More responsive touch/slide interface Better browser Larger screen Latest Android firmware Standard USB port

gw620-back gw620-front  gw620-side GW620-1 GW620-3 GW620-4

Slide Phone QWERTY Keyboard Dimension: L x W x D (mm): 109 x 54.5 x 15.9 Android Cupcake Bluetooth Touch Screen Camera Resolution: 5 megapixels Video External Memory: Micro SD up to 16Gb 3.5’’ Audio Jack

3M MPro150 Pocket Projector Review

Overall this is a nice looking device that has a decent price tag for what it offers.  It is small, portable and easy to use.  It will never replace a full size projector but if you want to impress your friends at home, or fancy using this at the office, then it has potential.

3M_MPro150 The 3M MPro150 is the latest pocket projector to be released by 3M, building on the previous MPro 120.

The MPro 150 is essentially the same as the MPro120 but with 1Gb internal storage, improved file format support, a USB mini out port and a MicroSD card slot.  The only downside is reduced battery life.

The full specifications page provides further information if you want to compare these two models further.

In the box you get the following:

MPro150 projector2Gb MicroSD cardBatteryWall charger with adapters (US, EU, UK)USB to mini USB cableComposite video cable (RCA)3 x RCA Gender ConvertersVGA computer cable TripodSoft protective pouchQuick start guideOut of the box the MPro150 is surprisingly light, weighing only 160 grams.  It is small enough to fit in a suit or jacket pocket.  The MPro150 exterior looks well built and feels good to hold in your hand.

 1888_3_

On the top of the device are controls for adjusting volume and for navigation around the menu systems, a zoom button and an on/off switch.

1Gb of memory is built into the device and a 2Gb MicroSD card is included should extra storage be needed.  Personally we would have preferred a standard SD card, we find the MicroSD variety too small and fiddly for our liking.

The front of the device holds the projector screen and a dial focus control.  The rear of the device holds a VGA/AV port and a mini USB port.  Again we would have preferred a standard USB cable connector.

1888_2_

The MPro150 connects to a variety of devices such as digital cameras and MP3 players, but the box only includes an RCA cable with a variety of gender connectors. 

That only provides half of the connectivity you need though.  If you want to connect one of these to your iPod Touch or digital camera for example, then you’ll need to buy additional cables that connect to the provided RCA gender connectors.  So it was a shame we couldn’t hook up these devices out of the box.

Setup is straightforward, simply connect the MPro150 to your laptop or PC and transfer the necessary files onto the internal memory.

The MPro150 supports a variety of file formats, including Microsoft Office (DOC, XLS, PPT), Adobe (PDF) as well as BMP and JPG image formats.  MP3 audio and MP4 video formats are supported.

A small three legged tripod is provided to enable the projector to stand safely on a desk.

3M-MPro-120-mini-projector

Once the projector is turned on a menu system is projected allowing a user to navigate and operate the projector.  The menu system is not the most intuitive and could be made easier to use, but after playing with the system for 10 minutes we felt comfortable working our way around.

PocketProjector_EU_Gen2_Gallery8_img_EUEN

A fan kicks in when the projector is initially switched on but soon switches off again.  We saw no signs of overheating or a noisy fan continually coming on.

Brightness or power is clearly not up to par with a dedicated full size projector, especially in brighter rooms, but if you can find a sufficiently dark room it is pretty good.

We tested out some Microsoft Word and Excel documents, these projected pretty well in small size rooms where we were sitting close to the projector.  Sitting further away and the brightness was not really sufficient to read text clearly, the font sizes became too small, so this projector won’t really scale up for larger size meeting rooms or for complex business documents containing a lot of text or graphics.

The MPro150 is more suited to small meetings or for simple PowerPoint presentations with a few bullet points on each page.

1888_4_  

We also tested projecting some JPG photos and these worked well.  Picture quality was pretty good and if you move the projector sufficiently far away from a wall then you can enjoy photo slideshows occupying a whole wall.

Overall this is a nice looking device that has a decent price tag for what it offers.  It is small, portable and easy to use.  It will never replace a full size projector but if you want to impress your friends at home, or fancy using this at the office, then it has potential.

We’d like to see a more generous selection of cables inside the box, improved brightness and resolution.  We give this a 4 out of 5 star rating.

Fancy winning one of these pocket projectors?

To enter, visit the mobile u web site and simply tell in 50 words or less the most memorable, funny or embarrassing presentation you’ve delivered or seen.  One winner will win £500 worth of  iwantoneofthose vouchers and an MPro150 as well as a short viral video being made, which the winner can star in if they wish.

PocketProjector_EU_Gen2_Gallery4_img_EUEN

Buy the 3M MPro150 Pocket Projector from Amazon.

If so consider receiving our FREE newsletter. Each review will be posted direct to your email inbox as soon as it is published. Your privacy is respected and you can unsubscribe at any time.

Size & Weight

Power & Battery

Battery Life: 120 minutes Battery Type: rechargeable lithium polymer battery

Memory

Internal: 1GB External: Micro SD Card slot (free 2GB card included)

File Format Support

Business Tools: DOC (MS Word), PPT (MS PowerPoint), XLS (MS Excel), TXT, PDF (Adobe) Image File: BMP, JPG Movie & Audio: MP4, MP3, PAL, NTSC, H.264, AMR, AAC

Inputs / Outputs

VGA Composite Video Component Video USB Mini 2.0 (Data Transfer) Audio Out (3.5mm Stereo Jack) Micro SD Card Slot

Host your domain with Google Apps – you@yourcompany.com


For those who have never done it, and those who are paying too much for it, there is an easy and inexpensive way to get your own registered domain name hosted for email so that you have an email address like bob@hiscompany.com

The trick to this is to use Google Apps and a domain registrar (I use godaddy.com as registrar in this example as it’s cheap and they’re one of the biggest on the internet).

First things first.  You need to decide on a domain name you want.

Go to godaddy.com, search for the domain name you want and follow the prompts to checkout and purchase. There should be sufficient instruction on their website on how to purchase.

Once that has been accomplished, you will be able to login and configure the domain so that email is hosted by Google Apps. This allows you to access your email from anywhere without any further concern for backups or uptime.

Sound good?  Then let’s get started.

In the godaddy interface, you login so that you can see your account (link to “My Account” in top right of screen on their current website layout).  This will show you your newly registered domain in a list.  Click on the “Advanced details” next to your domain name e.g. yourcompany.com.

On this screen, it is the “Total DNS” section you need to change.  Click on “Total DNS Control” to bring up the screen to edit these values.

There will be two settings shown under the MX section. These relate to email and need to be deleted by clicking on the red cross to the right.  Then we add three new ones in this MX section to point us to Google Apps email.

Click on “Add New MX Record” and enter these values (Note there is a period/fullstop after each of the names below.  TTL value is left at default of 1 hour)

Host Name - Goes to Address - Priority

@ – aspmx.l.google.com. – 10

@ – alt1.aspmx.l.google.com. – 20

@ – alt2.aspmx.l.google.com. – 30

@ – aspmx2.googlemail.com. – 40

@ - aspmx3.googlemail.com. – 50

Next we want to alter the CNAMES section so that mail.yourcompany.com points to the Google Apps email website.  To do this we, delete the current CNAME Alias called “mail” and create a new one of the same name with these settings…

Alias Name – Points to Hostname

mail – ghs.google.com

This should be it for setting up the domain, now we need to configure the Google Apps side to accept these emails for us.

Click on http://www.google.com/a

Click on the “Apps Editions” and choose the “Standard” which is free and allows up to 50 email addresses to be created.

Click on the “Get Started” button.

Now you can enter an existing domain name (bought from godaddy above) e.g. “yourcompany.com”.

Choose Administrator, as you control the domain, and then “Get Started”.

Next complete the screens with your personal details to register with Google Apps and you will eventually get to a page that talks about how you can confirm to Google Apps that you really own the domain.  You have 7 days to confirm this or this Google Apps account will be deleted.

To confirm ownership,  login to Google Apps and it will prompt you to verify ownership.

Choose  the first option “Add a DNS record to your domain’s configuration” and choose godaddy.com (assuming that’s who you registered with) from the drop down list .

Step-by-step instructions will be displayed on what is required.  You will need to login to godaddy.com and go to the “Domain Manager” (from the left-hand menu) and create a TXT record for the domain by clicking on “Total DNS Control”.

There is a button half-way down the screen on the right hand side called “Add New TXT Record”.  Click that and add the details that Google Apps indicated for the TXT Value and leave the TXT Name blank.

Finally, click on the “Verify” button at the bottom of the Google Apps page and you’re done!!!

There are options to create user email accounts but that is outside the scope of this little setup exercise and should hopefully be self-explanatory if you follow the on-screen instructions.

Also, it is worth noting that any editing of the domain settings through the godaddy.com site takes some time to be replicated around the internet. Don’t be dismayed immediately if you cannot see the fruits of your labour. If it is still not working a couple of days later, you have my permission to be dismayed.

NOTE: Once you are configuring your Google Apps account, you should enable the SSL checkbox under “Domain Settings”.  This makes your email communications encrypted even if you use http://mail.yourcompany.com

Good Luck :)

Inexpensive 802.11n Wifi USB with Ubuntu 10.04 Lucid Lynx


UPDATE: it may be possible to get this working with two simple lines. Tested as working under Ubuntu 10.10 “Maverick Meerkat”.

In a terminal window try the following and then reinsert the USB wireless N adapter.

cd /lib/firmware
ln -s RTL8192SE RTL8192SU

END UPDATE

I bought this relatively cheap USB wireless N adapter online but it did not work when initially inserted using Ubuntu 10.04 Lucid Lynx.

Now I cannot determine the speed as my Wireless Access point is actually on Wireless g (54Mbps) but this is what I did to get it working.

From the CD that came with the adapter, I copied off the file containing the Linux driver and then copied only the firmware to the appropriate location for Ubuntu to be able to utilise it.

(Assuming the CD is visible at /media/WLAN_6.58/)

Open a terminal window (from the Applications menu, Accessories), then type each line as shown below followed by Enter key each time.

mkdir ~/tmpwifidriver

cd ~/tmpwifidriver

cp /media/WLAN_6.58/USB-11N_RTL8191\&8188/Linux/rtl8192su_linux_2.6.0002.0708.2009.tar.gz ~/tmpwifidriver/

tar xvf rtl8192su_linux_2.6.0002.0708.2009.tar.gz

sudo cp -r ./rtl8192su_linux_2.6.0002.0708.2009/firmware/RTL8192SU/ /lib/firmware/

Just delete the temporary folder now to cleanup

rm -rf /home/tony/tmpwifidriver/

Then just insert the wifi USB adapter and click on the icon for Network Manager in the top right of the screen.  You should be able to see any nearby wireless hotspots.

For the record, my wifi adapter looks like this when queried with lsusb

Bus 001 Device 010: ID 0bda:8172 Realtek Semiconductor Corp.

A bargain for only $16!!

Monday, June 6, 2011

Webmin on a server running Ubuntu 10.04 “Lucid Lynx”


If you have an old PC lying around, why not put it to good use as a server?

Download Ubuntu 10.04 Server edition in 64-bit or 32-bit versions depending on how old your server is.  64-bit is recommended if the PC will accept it.

Once downloaded, you use .iso file to burn a CD.  Then boot from the CD to install Ubuntu Server on your machine.

This is an install that does not have the usual graphical user interface which can scare people off but it has its benefits.  You use the power of the machine only for its intended purpose e.g. acting as a file server, a DHCP or a DNS server.

Once it has been installed successfully and the network connection is verified to be working, it is quite feasible to remove the display monitor and to deal with the server across your network from now on.  A key tool in this approach is Webmin.

To install run the following command line

sudo apt-get install webmin

Once that completes, you will be able to install updates, configure the machine, add extra server components, get alerts when things are going awry on the server etc

To harness all this incredible power, point your browser (Firefox, Chrome etc) at …

https://yourservername:10000

As an example, once you have installed it, go to the menu on the left hand side, choose “Webmin Configuration” and then the “Upgrade Webmin” icon.

This will upgrade you up to the latest version available from the webmin site.

Then try this to keep track of all software updates that are available for your server…

On the same “Webmin Configuration” Screen, choose “Webmin Modules” icon and then the button to the right of “Standard module from www.webmin.com“.

Select “package-updates” from the list and follow the instruction to install it. (It may be already installed but this shows you how to get other modules should you be interested in adding new functionality to webmin).

It is also necessary to install another package which is not installed by default in order for the list of packages to work as expected.  Run this command line.

sudo apt-get install apt-show-versions

Now, you can have Webmin check for updates every hour and let you know via email if your server has important updates ready to be applied.  This is better than automatically configuring the server to apply updates blindly in case something breaks. You can then choose a suitable occasion to perform the updates when you have time to rectify any issues that may occur.

Click on the System menu on left-hand-side of Webmin screen and choose “Software Package Updates”. In there you can set your schedule for checking updates and where to send the email.

I recommend to check every hour and “Just notify” of available updates.  This screen is fairly self-explanatory.

Webmin has everything you need to remotely control your server and circumvents the need to run a graphical user desktop environment on that machine saving precious processing time particularly on older machines. It also makes the configuration,  monitoring and management of that server easier to perform remotely so it can be hidden away in some dark recess of your home or office.  This is a good thing if the machine is an ugly beast from the last century with a noisy fan and a hideous disfigurement like my server, “quasimodo”.

Thursday, May 19, 2011

Cloudist: Simple, scalable job queue for Ruby powered by AMQP and Event Machine

Wynn sat down with Nick Quaranto at Red Dirt Ruby Conference to talk about Gemcutter, RubyGems.org, and how to get started creating your own Ruby gem.

Rubyists seeking to move processing to the background have long relied on projects like Delayed Job and Resque. Now, Ivan Vanderbyl offers another option. Cloudist is powered by AMQP and EventMachine and aims to provide a simple yet highly scalable job queue for Ruby apps.

Cloudist workers can be in the form of a block:

Cloudist.start { log.info("Started Worker") job('make.sandwich') { log.info("JOB (#{id}) Make sandwich with #{data[:bread]} bread") job.started! (1..20).each do |i| job.progress(i * 5) sleep(1) raise ArgumentError, "NOT GOOD!" if i == 4 end job.finished! }}

… or a Ruby class:

class SandwichWorker < Cloudist::Worker def process log.info("Processing queue: #{queue.name}") log.info(data.inspect) job.started! (1..5).each do |i| job.progress(i * 20) # sleep(1) # raise ArgumentError, "NOT GOOD!" if i == 4 end job.finished! endendCloudist.signal_trap!Cloudist.start(:heartbeat => 10, :logging => false) { Cloudist.handle('make.sandwich').with(SandwichWorker)}

For usage, configuration, and more examples, check out the project repo on GitHub.

[Source on GitHub]

rel: Arel-inspired SQL query builder for Node.js

Wynn sat down with Nick Quaranto at Red Dirt Ruby Conference to talk about Gemcutter, RubyGems.org, and how to get started creating your own Ruby gem.

Arguably, Arel was one of the biggest new features introduced in Rails 3. Arel simplifies building complex SQL statements using idiomatic Ruby.

With Rel, Carl Woodward brings the power of Arel to Node.js. Written in CoffeeScript, Rel makes quick work of building SQL statements for a variety of relational databases.

Rel can be installed via npm:

npm install rel

We can then begin building a query:

users = new Rel.Table 'users'

If we want all users in our CMS we could use the star method:

users.project(Rel.star()).toSql()

Rel really shines, however, when using several chained operators, including joins:

users.join(photos).on(users.column('id').eq(photos.column('user_id')))# => SELECT * FROM users INNER JOIN photos ON users.id = photos.user_id

For a complete list of features, check out the very readable Vows-based specs in the repo on GitHub.

[Source on GitHub]

Large Hadron Migrator: Update huge SQL tables without going offline

Wynn sat down with Nick Quaranto at Red Dirt Ruby Conference to talk about Gemcutter, RubyGems.org, and how to get started creating your own Ruby gem.

With all the NoSQL hotness out there, believe it or not, some people are still using relational databases. (I know, right?).

When it comes to dealing with schema changes, the Active Record Migrations in Rails make schema changes so easy, developers often take them for granted. However, for extremely large sets of data, running an ALTER TABLE might mean taking your database offline for hours. After considering other projects Rany Keddo and the smart folks at Soundcloud developed their own solution.

Large Hadron Migrator, named for CERN’s high energy particle accelerator, uses a combination of copy table, triggers, and a journal table to move data bit by bit into a new table while capturing everything still coming into the source table in the live application.

To install, configure the gem in your Gemfile:

gem 'large-hadron-migrator'

… and run bundle install.

Next, write your migration as you normally would, using the LargeHadronMigration class instead:

class AddIndexToEmails < LargeHadronMigration def self.up large_hadron_migrate :emails, :wait => 0.2 do |table_name| execute %Q{ alter table %s add index index_emails_on_hashed_address (hashed_address) } % table_name end endend

Be sure to check out the project repo or blog post for advanced usage and caveats.

[Source on GitHub]

Wednesday, May 18, 2011

Node.js on your (jailbroken) iPhone

Wynn sat down with Nick Quaranto at Red Dirt Ruby Conference to talk about Gemcutter, RubyGems.org, and how to get started creating your own Ruby gem.

Nathan “Too Tall” Rajlich has gotten Node.js to run his jailbroken iPhone 4. If you’ve got SSH access on a jailbroken phone, simply extract the .deb package:

dpkg -i node-v0.4.5-ios-arm-1.deb

Now you can see if Node is running:

$ node> require('os').cpus()[ { model: 'N90AP', speed: 0, times: { user: 9209240, nice: 0, sys: 6997410, idle: 255377220, irq: 0 } } ]

Nate has created node-iOS to play with iOS-specific functionality with Node bindings:

var iOS = require('iOS');iOS.vibrate();// Quick vibrate, like when you receive text messageif (iOS.compass.available) { // true if the iDevice has a digitalcompass iOS.compass.on('heading', function(heading) { console.log(heading.magneticHeading); // Degrees relative tomagnetic north });}

Of course if you want to play with Node on mobile without jailbreaking your phone, Node.js powers the JavaScript services in WebOS.

[Source on GitHub] [Blog post]

async.js - asynchronous control flow in node.js and the browser

Wynn sat down with Nick Quaranto at Red Dirt Ruby Conference to talk about Gemcutter, RubyGems.org, and how to get started creating your own Ruby gem.

async.js, written by Caolan McMahon, is a fresh take on asynchronous control flow for node.js and the browser. It offers a simple API for executing some of the more difficult asynchronous control flow patterns which can cause even the most seasoned JavaScript developer to give up in an asynchronous rage.

async.js provides around 20 functions that include several async functional methods (map, reduce, filter, forEach, …) as well as common patterns for control flow (parallel, series, waterfall, whilst, queue, until, …). All these functions assume you follow the JavaScript convention of providing a single callback as the last argument of your async function.

Here is a simple example of using some of the basic asynchronous iterators. There are a lot more examples on the Github page.

var async = require('async'), fs = require('fs');var files = ['file1.txt', 'file2.txt', 'file3.txt'];var writeFile = function(file, callback) { console.log('Attempting to write file ' + file); fs.writeFile(file, 'foo', callback);};// Writes files in parallelasync.forEach(files, writeFile, function(err){ if (err) { console.log(err); return; } console.log('all operations complete without any errors');});// Writes files in seriesasync.forEachSeries(files, writeFile, function(err){ if (err) { console.log(err); return; } console.log('all operations complete without any errors');});

This is a contrived example, but it is paramount to understanding the power of the async.js library. Without the async.js library or a similar control flow library, you might get stuck writing brittle code with lots of nested callbacks.

Raphters: A web framework for C

Wynn sat down with Nick Quaranto at Red Dirt Ruby Conference to talk about Gemcutter, RubyGems.org, and how to get started creating your own Ruby gem.

For those that thought C had been delegated to the internals of your mobile devices or favorite database engine, Daniel Waterworth wants to string you up by the Raphters.

Raphters is a web framework written in C. Yes you heard that right, a shiny new framework for the web written in everybody’s favorite close-to-the-metal programming language. The project gets its name from RAPHT, a pattern that extends MVC that aims for greater security and flexibility:

Resources include things served up to clients like a database or API.Actions provide ways to interact with a Resource.Processors transform data.Handlers provide the entry point for a request.Templates render data.

A simple Hello World example to demostrate the patter might look something like:

#include "raphters.h"START_HANDLER (simple, GET, "simple", res, 0, matches) { response_add_header(res, "content-type", "text/html"); response_write(res, "hello world");} END_HANDLERSTART_HANDLER (default_handler, GET, "", res, 0, matches) { response_add_header(res, "content-type", "text/html"); response_write(res, "default page");} END_HANDLERint main() { add_handler(simple); add_handler(default_handler); serve_forever(); return 0;}

If you’re a C developer looking for speed (and security) you might give Raphters a look for your next web project.

[Source on GitHub]

Sass 3.1 released, now with functions, lists, and @media bubbling

Wynn sat down with Nick Quaranto at Red Dirt Ruby Conference to talk about Gemcutter, RubyGems.org, and how to get started creating your own Ruby gem.

Sass continues to provide innovative new ways to DRY up our CSS. Version 3.1 is out and offers many new language features, compilation performance improvements, and some new command line options.

Rubyists have long had the ability to extend Sass, but now anyone can create powerful functions using only Sass:

$grid-width: 40px;$gutter-width: 10px;@function grid-width($n) { @return $n * $grid-width + ($n - 1) * $gutter-width;}

Sass now includes some handy functions to work with lists introduced in version 3.0 including nth, append, join, and length:

$ sass -i>> nth(1px 2px 10px, 2)2px>> append(1px 2px, 5px)(1px 2px 5px)>> length(5px 10px)2

There is also a new @each directive to iterate over lists:

@each $animal in puma, sea-slug, egret, salamander { .#{$animal}-icon { background-image: url('/images/#{$animal}.png'); }}

Sass 3.1 brings changes to command line tools and some breaking changes:

There is a new scss command line utility to compile stylesheets, defaulting to the SCSS syntax.@import used with a path without a file extension will now throw an errorOld-style ! variable support has been removedThe css2sass command line utility has been removed in favor of sass-convert.

Check out the Changelog for complete release details. For a deeper look at Sass and Compass, check out our upcoming book Sass and Compass in Action from Manning, now in early access.

[Source on GitHub]

Using a USB modem for wireless 3G internet with Ubuntu 10.04 “Lucid Lynx”


Many of these devices contain their own software to work with Windows.
If you use them with a Windows machine, they act like a USB flash key containing the software and will install the necessary drivers.
Once this is done, they switch into a different mode of operation and act like a modem from then on.
This is not required in Ubuntu so we just need to make sure the modem skips that first stage. It’s a very simple fix actually but will involve getting an internet connection through another means first i.e. home internet, wifi at a cafe, a friend’s place etc

Open a Terminal window (under the Applications menu, Accessories).
Type the following to install what you need

sudo apt-get install usb-modeswitch

This will ask you for your password in order to install the software.
Once it is completed, you can just insert the USB modem again and connect using the Network Manager applet near the top right hand corner of the screen.
From here it depends on the internet provider that the USB modem relates to but it should get you a good deal closer to getting it working.

Problem with running Logitech webcam working in Skype on Ubuntu 10.04 “Lucid Lynx”


Here is a pretty simple fix that I found when using the Logitech QuickCam Communicate STX under Ubuntu 10.04 “Lucid Lynx” that may also apply to older versions of Ubuntu.

If the webcam does not show your video, the trick is to force it to use an older V4l library

Under Lucid Lynx, right click on the menus in the top corner and choose “Edit Menus”

Then go to “Internet”, select “Skype” and then “Properties” button.

You have an option of using one of the following as the Command

skype-wrapper

or for a 32-bit system

bash -c ‘export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so; skype’

or for a 64-bit system

bash -c ‘export LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so; skype’

Then close Skype and restart with the shortcut under “Applications” menu, “Internet”, “Skype”.

To test if the change worked, choose “Options” from the menu in Skype, then “Video Devices”, and then the “Test” button. You should see yourself in the test window.

To find out what camera you are using, run the following command in a terminal window…

Go to the “Applications” Menu, “Accessories”, and “Terminal”.

Type the following command and then hit Enter to see all of the USB devices connected to your PC, one of which will be the USB webcam.

lsusb

Mine shows

Bus 003 Device 004: ID 046d:08d7 Logitech, Inc. QuickCam Communicate STX

Tuesday, May 17, 2011

Downloading repo keys from behind a corporate firewall


Corporate firewalls commonly block port 11371 which launchpad PPA’s use for their keys.

It is possible though to get these through the normal port 80 for web traffic using the format below (replace the last reference to reflect the key you want to download)…
gpg --keyserver hkp://keyserver.ubuntu.com:80 %%recv-keys 0A5174AF

Installing Evolution 2.29.3 with mapi plugin under Ubuntu 9.10 Karmic


UPDATE: 2.29.5 is available.

Just change the version number in the wget lines below in Step 2 and follow the remaining steps as below taking care to update the new version number where appropriate.

You should not need to uninstall anything in advance.

Download, compile and install the following 4 files…

gtkhtml-3.29.5.tar.bz2

evolution-data-server-2.29.5.tar.bz2

evolution-2.29.5.tar.bz2

evolution-mapi-0.29.5.tar.bz2

ALERT: This posting relates to an “unstable release” of Evolution.  Although you may improve functionality against an Exchange 2007 server, you may also suffer from degraded performance. Install at your own risk.

These are the steps I followed to install the very latest unstable development version of Gnome Evolution.  It requires you to upgrade a few components over what is included in Ubuntu 9.10 Karmic Koala by default.

1. Run Applications menu-> Accessories-> terminal

2. Get the latest code tarballs by typing the following commands into the terminal window (note that we get two versions of the evolution code as the newest one appears to be missing a required file)

mkdir ~/evolution

cd ~/evolution

wget http://ftp.gnome.org/pub/GNOME/sources/gtkhtml/3.29/gtkhtml-3.29.3.tar.bz2

wget http://ftp.gnome.org/pub/GNOME/sources/evolution-data-server/2.29/evolution-data-server-2.29.3.tar.bz2

wget http://ftp.gnome.org/pub/GNOME/sources/evolution/2.29/evolution-2.29.3.tar.bz2

wget http://ftp.gnome.org/pub/GNOME/sources/evolution/2.29/evolution-2.29.3.2.tar.bz2

wget http://ftp.gnome.org/pub/GNOME/sources/evolution-mapi/0.29/evolution-mapi-0.29.3.tar.bz2

3. Get prereqs for building each of the packages by typing the following commands into the terminal window

sudo apt-get install libdb-dev libnspr4-dev libnss3-dev libical-dev libsqlite3-dev

sudo apt-get install bison intltool gnome-core-devel evolution-data-server-dev libcanberra-gtk-dev

sudo apt-get install libgtkhtml3.8-dev network-manager-dev libunique-dev libhal-dev

sudo apt-get install libgtkimageview-dev libpst-dev libnotify-dev

sudo apt-get install libmapi-dev samba4-dev libglib2.0-dev

4. Extract the source code from the tarballs with the following commands

tar xjvf gtkhtml-3.29.3.tar.bz2

tar xjvf evolution-data-server-2.29.3.tar.bz2

tar xjvf evolution-2.29.3.tar.bz2

tar xjvf evolution-2.29.3.2.tar.gz

tar xjvf evolution-mapi-0.29.3.tar.bz2

5. Now we should have a folder for each of the components under our ~/evolution folder, so we visit each folder in turn and build and install. Check for the screen for any errors, particularly after each install command, to see if the individual component built ok.  If you experience any errors, leave a comment here so that we can determine if a prerequisite is missing from your environment.

cd ~/evolution/gtkhtml-3.29.3

./configure

make

sudo make install

cd ~/evolution/gtkhtml-3.29.3

./configure

make

sudo make install

cd ~/evolution/evolution-data-server-2.29.3

./configure

make

sudo make install

cd ~/evolution/evolution-2.29.3

./configure

make

sudo make install

cd ~/evolution/evolution-2.29.3.2

./configure

make

sudo make install

cd ~/evolution/evolution-mapi-0.29.3

./configure

make

sudo make install

6. If everything built alright, you should now be able to launch Evolution and check in the Help menu -> About to confirm that you are running 2.29.3.2 now.  You should also have improved (but still buggy) calendar functionality if you have an Exchange 2007 email server  As stated at the top of this posting, this is an unstable release of code under very active development at the moment. Only try these steps if you can cope with Evolution not working or working intermittently.

If you are dependent on Evolution to work and it does not currently meet your requirements with the version you have already installed, then try the steps shown here.

Free graphics card by earning bitcoins


Well, here’s the plan.

I’ve just bought a Powercolor ATI Radeon HD 5770 for AUD$127 from msy.com.au in Ultimo, Sydney yesterday.

This is a good quality graphics card that is below the current 6000 series cards in terms of performance but cheap at the price.

What I plan to do is earn enough money from it to cover the cost within 2 months!

How is that to be achieved? By “GPU mining”.

With the advent of OpenCL support, the newer graphics cards can be instructed to use the onboard graphics chip (known as the “GPU”) to focus on intensive mathematical tasks and free up the main system CPU to do other things.  The GPU is designed for this sort of work so it’s an ideal way to get the most out of the hardware you have purchased.

Ok, here’s where the money comes in.  Bitcoin is a form of virtual currency that is managed by a network of connected computers on the internet that talk to each other at a peer level to manage the transfer of bitcoins from one party to another.  The transfer is anonymous in that you know the identifier of the party you are dealing with but not who they are. There are businesses that are accepting bitcoins as a form of payment. The computers in the bitcoin network belong to any individual that is interested in partaking in the bitcoin economy.

My computer is now one of them.

Every now and again, one of the nodes (i.e. computers) in the network creates some new bitcoins (50 at a time to be precise).  The more processing power you have, the more likely you are to create a block of 50. By adding this graphics card, I have increased my processing power for bitcoin generation by about 150 times and should create 50 within 8 days on average according to the bitcoin calculator. I am processing at 155 Mhash/sec now.

There are markets to swap bitcoins for USD through paypal transactions which at time of writing show that 1 bitcoin is near to USD$1.  I will earn USD$50 per week on that basis which will pay for the card in under a month but I’m being conservative by aiming for 2 months. There has been a significant rise in the relative value of a bitcoin in the past 6 months which is a critical factor in this plan.

In order to get things running on Ubuntu 10.10 64-bit “Maverick Meerkat”, I had to download and install the proprietary version of the ATI driver (10.11 is the best for performance currently) for my card.  It chose the radeon driver by default which does not provide the OpenCL support required. Also, I chose ATI since their performance for mining is far, far better than Nvidia’s.

It was necessary to also get the ATI Stream SDK 2.1 from here.  This provides the OpenCL libraries.

I also downloaded this to get the correct ICD files installed under /etc/OpenCL/vendors

This how-to for Maverick Meerkat and also this link were invaluable in getting to this point.

Having achieved that little success, now we need to get the bitcoin software and also the Diablo GPU miner software.

You should ensure that the bitcoin server is running rather than the actual user interface (see below).

In a terminal window, run the following

sudo gedit ~/.bitcoin/bitcoin.conf

and put in any values for rpcuser and rpcpassword

rpcuser=myself

rpcpassword=somethingsecret

Then you need to run the bitcoin server with

bitcoind -server

Now finally you need to run the Diablo miner making sure that it knows where the ATI Stream SDK OpenCL library is. (find it with sudo find / -name libOpenCL.so) and using the path to where you downloaded the miner along with the username and password you put into the bitcoin.conf earlier.

export LD_LIBRARY_PATH=~/Downloads/ati-stream-sdk-v2.1-lnx64/lib/x86_64/

./DiabloMiner-Linux.sh -u myself -p somethingsecret -w 64 -f 10

This should then show the current processing in terms of khash/sec.  Mine is between 150,000 and 160,000.

Now to sit back and see if I improve on my free 0.05 bitcoins in the next 8 days (UPDATE: First 50 bitcoins arrived this morning, 27/02/11 4:14:49 AM, after about 15 days of processing)

Oh, and if you do manage to get some coins and fancy giving them away, my bitcoin wallet is 1Cfdc5DHMABv27eyQ9xcrnuynQmx9dRXTg

Upgrading from ext3 to ext4 in Ubuntu


If you have installed Ubuntu recently you will find that ext4 is the standard format used for creating filesystems. However, if you upgraded from an older version of Ubuntu you may be still using ext3.

The following instructions show how to upgrade the filesystem format with the data still in place. I am presuming you have a backup of your data in case this goes completely pear-shaped.

First confirm that you are using ext3 by typing the following command in a terminal window (Go to Applications menu, Accessories, Terminal)

sudo df -Th

One of the lines that showed up for me was

/dev/sdb1     ext3   241263968  93827044 137632456  41% /media/mirror

Now download, create and boot from a Ubuntu live CD so that none of your hard drives are in use.  Choose the 32-bit option of the latest version (ver 10.10 at time of writing) of Ubuntu.

Then restart the machine with this newly created CD and again confirm the name of the device you want to upgrade from ext3 to ext4.

sudo df -Th

Before making the change in format, let’s check the disk for any errors

sudo e2fsck -fDC0 /dev/sdb1

When that completed, we make the change from ext3 to ext4 with

sudo tune2fs -O extents,uninit_bg,dir_index /dev/sdb1

The only thing left to do is to edit the fstab file so that the filesystem loads with ext4

The fstab file will be on the drive that you use to boot the PC in the /etc directory.  Although not in my example here, this may be the drive you just modified.

We need to mount the drive that is used for booting (I assume it is sda1 here)

sudo mkdir /mnt/sda1
sudo mount -t ext4 /dev/sda1 /mnt/sda1

Now edit the fstab file

sudo nano /mnt/sda1/etc/fstab

Look for the line which contains your recently changed drive (sdb1 for me) and alter the format from ext3 to ext4 and hit control-x to exit.  Then hit the Y key to accept the changes and hit enter to replace the old fstab file.

Now it’s just a matter of restarting for the drive to be reloaded with ext4.

Thursday, May 5, 2011

5 Best Linux Distribution With No Proprietary Components

Linux is a free and open source operating system. However, Linux (and other open source operating system) can use and load device drivers without publicly available source code. These are vendor-compiled binary drivers without any source code and known as Binary Blobs. Die hard open source fans and Free Software Foundation (FSF) recommends completely removing all proprietary components including blobs. In this post I will list five best Linux distribution that meets the FSF's strict guidelines and contains no proprietary components such as firmware and drivers.

Modification & distribution - Binary blobs can not be improved or fixed by open source developers. You can not distribute modified versions.Reliability - Binary blobs can be unsupported by vendors at any time by abandoning driver maintenance.Auditing - Binary blobs cannot be audited for security and bugs. You are forced to trust vendors not to put backdoors and spyware into the blob.Bugs - Binary blobs hide many bugs. Also, it can motivate people to buy new hardware.Portability - Binary blobs can not be ported on different hardware architectures. It typically runs on a few hardware architectures.

The following are not just a distribution but offers additional benefits too:

Learn how a distribution works on the inside.Ease of use.An active community providing quick and helpful support.

gNewSense is a GNU/Linux distribution based on Ubuntu Linux. However, gNewSense v3.0 will be based on Debian instead of Ubuntu. The current version is same as Ubuntu, but with all non-free software and binary blobs removed. The FSF considers gNewSense to be a GNU/Linux distribution composed entirely of free software.

Fig.01: Default gNewSense Desktop Fig.01: Default gNewSense Desktop

The Latest stable release is v2.3 and it was released on September 14, 2009. By default gNewSense uses GNOME, as the official desktop environment. However, use can change the graphical user interface, install other window managers, and other software via its repositories using the apt-get command.

=> Download gNewSense

Dragora is a GNU/Linux distribution created from scratch. The FSF considers Dragora to be a GNU/Linux distribution composed entirely of free software. It has a very simple packaging system that allows you to: install, remove, upgrade and create packages with ease. Dragora features runit, among other things, for it's system startup by default, which ensures the complete control of system services.

Fig.02: Dragora GNU/Linux Desktop Fig.02: Dragora GNU/Linux Desktop

=> Download Dragora

BLAG Linux is a GNU/Linux distribution based on Fedora Linux. The current version is just like Fedora but with all non-free software and binary blobs removed. The latest stable release, BLAG90001, is based on Fedora 9, and was released 21 July 2008.

Fig.03: Blag GNU/Linux Desktop Fig.03: Blag GNU/Linux Desktop

BLAG comes with various server packages including Fedora plus updates, and support for 3rd party repo rom Dag, Dries, Freshrpms, NewRPMS, and includes custom packages. BLAG140000 (beta version) is based on Fedora 14, and was released on 8 February 2011. The FSF considers BLAG and GNU to be a GNU/Linux distribution composed entirely of free software.

Fig.03-1: Blag GNU/Linux 140k Beta Desktop Fig.03-1: Blag GNU/Linux 140k Beta Desktop

=> Download BLAG Linux (stable) and BLAG140000 (beta version)

Musix GNU/Linux is a live CD and DVD Linux distribution based on Debian Linux. It is intended for music production, graphic design, audio and video editing, and general purpose applications. The FSF considers Musix to be a GNU/Linux distribution composed entirely of free software. Musix is developed by a team from Argentina, Spain, Mexico and Brazil. The main language used in development discussion and documentation is Spanish; however, Musix has a community of users who speak Spanish, Portuguese, and English. The default user interface is set to IceWM. However, user can install other interfaces such as KDE.

Fig.04: Musix GNU/Linux Desktop Fig.04: Musix GNU/Linux Desktop

=> Download Musix GNU/Linux

Trisquel is a GNU/Linux distribution based on Debian Linux operating system. The latest version is derived from Ubuntu Linux, but includes only free software with all blobs removed. The FSF considers Trisquel to be a GNU/Linux distribution composed entirely of free software with its own complete binary repository. It is intended for for small business / enterprises, domestic users and educational centers. From the project home page:

Trisquel has several editions, designed for different uses: the one called simply Trisquel ? the most important one ? is intended for home and personal use, and includes a lot of apps for that: networking, multimedia, office, games, etc. The Edu edition is designed for educational centers, and allows the teacher to build a custom digital classroom within minutes. The Pro edition is for enterprises, and includes accounting and business management software. The Mini edition is for netbooks and older computers.

Fig.05: Trisquel GNU/Linux Desktop Fig.05: Trisquel GNU/Linux Desktop

Ututo is a GNU/Linux distribution based on Gentoo Linux. It is compiled using Gentoo Linux "ebuilds" and "emerge" software. The FSF considers Ututo to be a GNU/Linux distribution composed entirely of free software with its own complete binary repository. It was the first fully free GNU/Linux system recognized by the GNU Project.

Venenux, a GNU/Linux distribution built around the KDE desktop.

Dynebolic, a GNU/Linux distribution with special emphasis on audio and video editing.

A lot of wireless cards and nvidia graphics did not worked with any of the above distros as blobs are removed. However, I was able to install it on my old Intel Celeron 1.7GHz desktop with 512MB RAM + 40GiB disk. Graphics worked well including onboard NIC, sound card and Atheros wireless card also worked out without any problems.

OpenBSD developers do not permit the inclusion of closed source binary drivers in the source tree and are reluctant to sign NDAs. If you are serious about running a system with no binary blobs, you may want to try out OpenBSD too. It supports Gnome, KDE and other desktop environments too.

From the project website:

The Debian project has been working in removing non-free firmware from the Linux kernel shipped with Debian for the past two release cycles. At the time of the releases of Debian 4.0 "Etch" and 5.0 "Lenny", however, it was not yet possible to ship Linux kernels stripped of all non-free firmware bits. Back then we had to acknowledge that freedom issues concerning Linux firmware were not completely sorted out.

Debian v6.x will provide the non-free firmware from the official non-free repository.

Jeremy Andrews conducts a free-ranging interview, focused mainly on OpenBSD 3.9 and drivers, that gives Theo a chance to explain how the big North American chip vendors' business practices make it harder for open source projects, talk about "binary blobs" vs firmware in drivers, and more.Guidelines for free system distributionsOpenBSD 3.9: "Blob!" lyrics. Free GNU/Linux distributions

(Image credit: Respective GNU/Linux distribution projects webpage and wikipedia).

Download Ubuntu 11.04 (Natty Narwhal) CD ISO / DVD Images

The latest version of the popular Linux desktop distribution Ubuntu 11.04 has been released and available from the official project web site. This new version uses the Unity user interface instead of GNOME Shell as default desktop (user can switch back to classic Gnome desktop any time). New features since Ubuntu 10.10 includes - Banshee as the default music player, Mozilla Firefox 4, LibreOffice, Linux kernel v2.6.38.2, gcc 4.5, Python 2.7, dpkg 1.16.0, Upstart 0.9, X.org 1.10.1, Mesa 7.10.2, Shotwell 0.9.2, and Evolution 2.32.2.

Fig.01: Default Ubuntu Linux 11.04 Desktop with Unity Graphical Interface Fig.01: Default Ubuntu Linux 11.04 Desktop with Unity Graphical Interface

64 Bit DVD version (4G)32 Bit DVD version (3.9G)

You can directly upgrade to Ubuntu 11.04 from Ubuntu v10.10, see upgrade howto here.

Download Ubuntu 10.10 (Maverick Meerkat) CD ISO / DVD Images

The latest version of the popular Linux desktop distribution Ubuntu 10.10 has been released and available from the official project web site. New features since Ubuntu 10.04 includes - Gnome 2.32, KDE 4.5.0 (QT 4.7), new KDE browser Rekonq, Pulse Audio as the default sound server, Firefox 3.6.9, OpenOffice 3.2.1, Evolution 2.30.3, Shotwell, Btrfs with experimental support, kernel 2.6.35, and X.org version 1.9.

Fig.01: Ubuntu 10.10 (Maverick Meerkat) Desktop Fig.01: Ubuntu 10.10 (Maverick Meerkat) Desktop

64 Bit DVD version32 Bit DVD version

You can directly upgrade to Ubuntu 10.10 from Ubuntu 10.04, see upgrade howto here.

Wednesday, May 4, 2011

Download Debian Linux 6 Squeeze ISO / CD / DVD Images

Debian GNU/Linux version 6.0 has been released ( jump to download ) after 24 months of constant development and available for download in various media format. Debian 6.0 is a free operating system, coming for the first time in two flavours. Alongside Debian GNU/Linux, Debian GNU/kFreeBSD is introduced with this version as a "technology preview". It also supports various processor architectures and includes the KDE, GNOME, Xfce, LXDE and other desktop environments. It also features compatibility with the FHS v2.3 and software developed for version 3.2 of the LSB.

Debian 6.0 introduces a dependency based boot system, making system start-up faster and more robust due to parallel execution of boot scripts and correct dependency tracking between them. Various other changes make Debian more suitable for small form factor notebooks, like the introduction of the KDE Plasma Netbook shell. Following new updated major software packages are included:

KDE Plasma Workspaces and KDE Applications version 4.4.5an updated version of the GNOME desktop environment version 2.30the Xfce version 4.6 desktop environmentLXDE version 0.5.0X.Org version 7.5OpenOffice.org version 3.2.1GIMP version 2.6.11Iceweasel version 3.5.16 (an unbranded version of Mozilla Firefox)Icedove version 3.0.11 (an unbranded version of Mozilla Thunderbird)PostgreSQL version 8.4.6MySQL version 5.1.49GNU Compiler Collection version 4.4.5Linux kernel version 2.6.32Apache web server version 2.2.16Samba file and print server version 3.5.6Python version 2.6.6, 2.5.5 and 3.1.3Perl version 5.10.1PHP version 5.3.3Asterisk version 1.6.2.9Nagios version 3.2.3Xen Hypervisor 4.0.1 (dom0 as well as domU support)OpenJDK version 6b18Tomcat version 6.0.18And more than 29,000 other ready-to-use software packages, built from nearly 15,000 source packages.

Debian provides all packages on CD / DVD and the total size is around 32GB+ for all media files. You only need to download first CD / DVD and install the base system. Once downloaded, use the Internet to install any packages.

For almost all PCs use 32 bit version. For e.g., most machines with Intel/AMD type processors.Choose 64 bit version to take full advantage of computers based on the AMD64 or EM64T architecture (e.g., Athlon64, Opteron, EM64T Xeon, Core 2 duo).

There are total 8 DVD images:

You can use the following shell script to grab all 8 DVD images:

#!/bin/bash# getdeb6: Download Debian 6 DVD images# Tip: run it over screen session_bit="${1:-64}"_arch="i386"_base="http://cdimage.debian.org/debian-cd/6.0.0/i386/iso-dvd"[ "$_bit" == "64" ] && { _base="http://cdimage.debian.org/debian-cd/6.0.0/amd64/iso-dvd"; _arch="amd64"; }echo "Downloading Debian Linux v6.0 ${_bit} bit DVD..."for i in {1..8}do # build image path_image="${_base}/debian-6.0.0-${_arch}-DVD-${i}.iso"wget -c $_imagedone

To grab 32 bit images, enter:
$ mkdir debian6_32 && cd debian6_32
$ ./getdeb6 32
To grab 64 bit images
$ mkdir debian6_64 && cd debian6_64
$ ./getdeb6

There are total 52 ISO images, I strongly suggest to get DVD images :

You can use the following shell script to grab all 52 images:

#!/bin/bash# getdeb6: Download Debian 6 ISO images# Tip: run it over screen session_bit="${1:-64}"_arch="i386"_base="http://cdimage.debian.org/debian-cd/6.0.0/i386/iso-cd"[ "$_bit" == "64" ] && { _base="http://cdimage.debian.org/debian-cd/6.0.0/amd64/iso-cd"; _arch="amd64";}echo "Downloading Debian Linux v6.0 ${_bit} bit ISO images..."for i in {1..52}do_image="${_base}/debian-6.0.0-${_arch}-CD-${i}.iso"wget -c $_imagedone

To grab 32 bit images, enter:
$ mkdir debian6_32 && cd debian6_32
$ ./getdeb6 32
To grab 64 bit images
$ mkdir debian6_64 && cd debian6_64
$ ./getdeb6

Download images from the following mirror:

Linux Commands For Shared Library Management & Debugging Problem

If you are a developer, you will re-use code provided by others. Usually /lib, /lib64, /usr/local/lib, and other directories stores various shared libraries. You can write your own program using these shared libraries. As a sys admin you need to manage and install these shared libraries. Use the following commands for shared libraries management, security, and debugging problems.

In Linux or UNIX like operating system, a library is noting but a collection of resources such as subroutines / functions, classes, values or type specifications. There are two types of libraries:

Static libraries - All lib*.a fills are included into executables that use their functions. For example you can run a sendmail binary in chrooted jail using statically liked libs.Dynamic libraries or linking [ also known as DSO (dynamic shared object)] - All lib*.so* files are not copied into executables. The executable will automatically load the libraries using ld.so or ld-linux.so.ldconfig : Updates the necessary links for the run time link bindings.ldd : Tells what libraries a given program needs to run.ltrace : A library call tracer.ld.so/ld-linux.so: Dynamic linker/loader.

As a sys admin you should be aware of important files related to shared libraries:

/lib/ld-linux.so.* : Execution time linker/loader./etc/ld.so.conf : File containing a list of colon, space, tab, newline, or comma separated directories in which to search for libraries. /etc/ld.so.cache : File containing an ordered list of libraries found in the directories specified in /etc/ld.so.conf. This file is not in human readable format, and is not intended to be edited. This file is created by ldconfig command.lib*.so.version : Shared libraries stores in /lib, /usr/lib, /usr/lib64, /lib64, /usr/local/lib directories.

You need to use the ldconfig command to create, update, and remove the necessary links and cache (for use by the run-time linker, ld.so) to the most recent shared libraries found in the directories specified on the command line, in the file /etc/ld.so.conf, and in the trusted directories (/usr/lib, /lib64 and /lib). The ldconfig command checks the header and file names of the libraries it encounters when determining which versions should have their links updated. This command also creates a file called /etc/ld.so.cache which used to speed linking.

In this example, you've installed a new set of shared libraries at /usr/local/lib/:
$ ls -l /usr/local/lib/
Sample outputs:

-rw-r--r-- 1 root root 878738 Jun 16 2010 libGeoIP.a-rwxr-xr-x 1 root root 799 Jun 16 2010 libGeoIP.lalrwxrwxrwx 1 root root 17 Jun 16 2010 libGeoIP.so -> libGeoIP.so.1.4.6lrwxrwxrwx 1 root root 17 Jun 16 2010 libGeoIP.so.1 -> libGeoIP.so.1.4.6-rwxr-xr-x 1 root root 322776 Jun 16 2010 libGeoIP.so.1.4.6-rw-r--r-- 1 root root 72172 Jun 16 2010 libGeoIPUpdate.a-rwxr-xr-x 1 root root 872 Jun 16 2010 libGeoIPUpdate.lalrwxrwxrwx 1 root root 23 Jun 16 2010 libGeoIPUpdate.so -> libGeoIPUpdate.so.0.0.0lrwxrwxrwx 1 root root 23 Jun 16 2010 libGeoIPUpdate.so.0 -> libGeoIPUpdate.so.0.0.0-rwxr-xr-x 1 root root 55003 Jun 16 2010 libGeoIPUpdate.so.0.0.0

Now when you run an app related to libGeoIP.so, you will get an error about missing library. You need to run ldconfig command manually to link libraries by passing them as command line arguments with the -l switch:
# ldconfig -l /path/to/lib/our.new.lib.so
Another recommended options for sys admin is to create a file called /etc/ld.so.conf.d/geoip.conf as follows:

/usr/local/lib

Now just run ldconfig to update the cache:
# ldconfig
To verify new libs or to look for a linked library, enter:
# ldconfig -v
# ldconfig -v | grep -i geoip
Sample outputs:

libGeoIP.so.1 -> libGeoIP.so.1.4.6libGeoIPUpdate.so.0 -> libGeoIPUpdate.so.0.0.0

You can print the current cache with the -p option:
# ldconfig -p
Putting web server such as Apache / Nginx / Lighttpd in a chroot jail minimizes the damage done by a potential break-in by isolating the web server to a small section of the filesystem. It is also necessary to copy all files required by Apache inside the filesystem rooted at /jail/ directory , including web server binaries, shared Libraries, modules, configuration files, and php/perl/html web pages. You need to also copy /etc/{ld.so.cache,ld.so.conf} files and /etc/ld.so.conf.d/ directory to /jail/etc/ directory. Use the ldconfig command to update, print and troubleshoot chrooted jail problems:

### chroot to jail bashchroot /jail /bin/bash### now update the cache in /jail ###ldconfig### print the cache in /jail ###ldconfig -p### copy missing libs ###cp /path/to/some.lib /jail/path/to/some.libldconfigldconfig -v | grep some.lib### get out of jail ###exit### may be delete bash and ldconfig to increase security (NOTE path carefully) ###cd /jailrm sbin/ldconfig bin/bash### now start nginx jail ###chroot /jail /usr/local/nginx/sbin/nginx 

A rootkit is a program (or combination of several programs) designed to take fundamental control of a computer system, without authorization by the system's owners and legitimate managers. Usually, rootkit use /lib, /lib64, /usr/local/lib directories to hide itself from real root users. You can use ldconfig command to view all the cache of all shared libraries and unwanted programs:
# /sbin/ldconfig -p | less
You can also use various tools to detect rootkits under Linux.

You may see the errors as follows:

Dynamic linker error in foo
Can't map cache file cache-file
Cache file cache-file foo

All of the above errors means the linker cache file /etc/ld.so.cache is corrupt or does not exists. To fix these errors simply run the ldconfig command as follows:
# ldconfig

The executable required a dynamically linked library that ld.so or ld-linux.so cannot find. It means a library called xyz needed by the program called foo not installed or path is not set. To fix this problem install xyz library and set path in /etc/ld.so.conf file or create a file in /etc/ld.so.conf.d/ directory.

ldd (List Dynamic Dependencies) is a Unix and Linux program to display the shared libraries required by each program. This tools is required to build and run various server programs in a chroot jail. A typical example is as follows to list the Apache server shared libraries, enter:
# ldd /usr/sbin/httpd
Sample outputs:

libm.so.6 => /lib64/libm.so.6 (0x00002aff52a0c000)libpcre.so.0 => /lib64/libpcre.so.0 (0x00002aff52c8f000)libselinux.so.1 => /lib64/libselinux.so.1 (0x00002aff52eab000)libaprutil-1.so.0 => /usr/lib64/libaprutil-1.so.0 (0x00002aff530c4000)libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002aff532de000)libldap-2.3.so.0 => /usr/lib64/libldap-2.3.so.0 (0x00002aff53516000)liblber-2.3.so.0 => /usr/lib64/liblber-2.3.so.0 (0x00002aff53751000)libdb-4.3.so => /lib64/libdb-4.3.so (0x00002aff5395f000)libexpat.so.0 => /lib64/libexpat.so.0 (0x00002aff53c55000)libapr-1.so.0 => /usr/lib64/libapr-1.so.0 (0x00002aff53e78000)libpthread.so.0 => /lib64/libpthread.so.0 (0x00002aff5409f000)libdl.so.2 => /lib64/libdl.so.2 (0x00002aff542ba000)libc.so.6 => /lib64/libc.so.6 (0x00002aff544bf000)libsepol.so.1 => /lib64/libsepol.so.1 (0x00002aff54816000)/lib64/ld-linux-x86-64.so.2 (0x00002aff527ef000)libuuid.so.1 => /lib64/libuuid.so.1 (0x00002aff54a5c000)libresolv.so.2 => /lib64/libresolv.so.2 (0x00002aff54c61000)libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00002aff54e76000)libssl.so.6 => /lib64/libssl.so.6 (0x00002aff5508f000)libcrypto.so.6 => /lib64/libcrypto.so.6 (0x00002aff552dc000)libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00002aff5562d000)libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00002aff5585c000)libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00002aff55af1000)libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00002aff55cf3000)libz.so.1 => /usr/lib64/libz.so.1 (0x00002aff55f19000)libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00002aff5612d000)libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00002aff56335000)

Now, you can copy all those libs one by one to /jail directory

# mkdir /jail/lib# cp /lib64/libm.so.6 /jail/lib# cp /lib64/libkeyutils.so.1 /jail/lib

You can write a bash script to automate the entire procedure:

cp_support_shared_libs(){ local d="$1" # JAIL ROOT local pFILE="$2" # copy bin file libs local files=""## use ldd to get shared libs list ### files="$(ldd $pFILE | awk '{ print $3 }' | sed '/^$/d')"  for i in $files do dcc="${i%/*}" # get dirname only [ ! -d ${d}${dcc} ] && mkdir -p ${d}${dcc} ${_cp} -f $i ${d}${dcc} done  # Works with 32 and 64 bit ld-linux sldl="$(ldd $pFILE | grep 'ld-linux' | awk '{ print $1}')" sldlsubdir="${sldl%/*}" [ ! -f ${d}${sldl} ] && ${_cp} -f ${sldl} ${d}${sldlsubdir}}

Call cp_support_shared_libs() it as follows:

cp_support_shared_libs "/jail" "/usr/local/nginx/sbin/nginx"

Type the following command:
$ ldd -d /path/to/executable

Type the following command:
$ ldd -r /path/to/executable

TCP Wrapper is a host-based Networking ACL system, used to filter network access to Internet. TCP wrappers was original written to monitor and stop cracking activities on the UNIX / Linux systems. To determine whether a given executable daemon supports TCP Wrapper or not, run the following command:
$ ldd /usr/sbin/sshd | grep libwrap
Sample outputs:

libwrap.so.0 => /lib64/libwrap.so.0 (0x00002abd70cbc000)

The output indicates that the OpenSSH (sshd) daemon supports TCP Wrapper.

You can use the ldd command when an executable is failing because of a missing dependency. Once you found a missing dependency, you can install it or update the cache with the ldconfig command as mentioned above.

The ltrace command simply runs the specified command until it exits. It intercepts and records the dynamic library calls which are called by the executed process and the signals which are received by that process. It can also intercept and print the system calls executed by the program. Its use is very similar to strace command.
# ltrace /usr/sbin/httpd
# ltrace /sbin/chroot /usr/sbin/httpd
# ltrace /bin/ls
Sample outputs:

__libc_start_main(0x804fae0, 1, 0xbfbd6544, 0x805bce0, 0x805bcd0 strrchr("/bin/ls", '/') = "/ls"setlocale(6, "") = "en_IN.utf8"bindtextdomain("coreutils", "/usr/share/locale") = "/usr/share/locale"textdomain("coreutils") = "coreutils"__cxa_atexit(0x8052d10, 0, 0, 0xbfbd6544, 0xbfbd6498) = 0isatty(1) = 1getenv("QUOTING_STYLE") = NULLgetenv("LS_BLOCK_SIZE") = NULLgetenv("BLOCK_SIZE") = NULLgetenv("BLOCKSIZE") = NULLgetenv("POSIXLY_CORRECT") = NULLgetenv("BLOCK_SIZE") = NULLgetenv("COLUMNS") = NULLioctl(1, 21523, 0xbfbd6470) = 0getenv("TABSIZE") = NULLgetopt_long(1, 0xbfbd6544, "abcdfghiklmnopqrstuvw:xABCDFGHI:"..., 0x0805ea40, -1) = -1__errno_location() = 0xb76b8694malloc(40) = 0x08c8e3e0memcpy(0x08c8e3e0, "", 40) = 0x08c8e3e0...............output truncatedfree(0x08c8e498) = free(NULL) = free(0x08c8e480) = exit(0 __fpending(0xb78334e0, 0xbfbd6334, 0xb78876a3, 0xb78968f8, 0) = 0fclose(0xb78334e0) = 0__fpending(0xb7833580, 0xbfbd6334, 0xb78876a3, 0xb78968f8, 0) = 0fclose(0xb7833580) = 0+++ exited (status 0) +++

The ltrace command is a perfect debugging utility in Linux:

To monitor the library calls used by a program and all the signals it receives. For tracking the execution of processes. It can also show system calls, used by a program.

Consider the following c program:

 #include int main(){printf("Hello world\n");return 0;} 

Compile and run it as follows:
$ cc hello.c -o hello
$ ./hello
Now use the ltrace command to tracking the execution of processes:
$ ltrace -S -tt ./hello
Sample outputs:

15:20:38.561616 SYS_brk(NULL) = 0x08f4200015:20:38.561845 SYS_access("/etc/ld.so.nohwcap", 00) = -215:20:38.562009 SYS_mmap2(0, 8192, 3, 34, -1) = 0xb770800015:20:38.562155 SYS_access("/etc/ld.so.preload", 04) = -215:20:38.562336 SYS_open("/etc/ld.so.cache", 0, 00) = 315:20:38.562502 SYS_fstat64(3, 0xbfaafe20, 0xb7726ff4, 0xb772787c, 3) = 015:20:38.562629 SYS_mmap2(0, 76469, 1, 2, 3) = 0xb76f500015:20:38.562755 SYS_close(3) = 015:20:38.564204 SYS_access("/etc/ld.so.nohwcap", 00) = -215:20:38.564372 SYS_open("/lib/tls/i686/cmov/libc.so.6", 0, 00) = 315:20:38.564561 SYS_read(3, "\177ELF\001\001\001", 512) = 51215:20:38.564694 SYS_fstat64(3, 0xbfaafe6c, 0xb7726ff4, 0xb7705796, 0x8048234) = 015:20:38.564822 SYS_mmap2(0, 0x1599a8, 5, 2050, 3) = 0xb759b00015:20:38.565076 SYS_mprotect(0xb76ee000, 4096, 0) = 015:20:38.565209 SYS_mmap2(0xb76ef000, 12288, 3, 2066, 3) = 0xb76ef00015:20:38.565454 SYS_mmap2(0xb76f2000, 10664, 3, 50, -1) = 0xb76f200015:20:38.565604 SYS_close(3) = 015:20:38.565709 SYS_mmap2(0, 4096, 3, 34, -1) = 0xb759a00015:20:38.565842 SYS_set_thread_area(0xbfab030c, 0xb7726ff4, 0xb759a6c0, 1, 0) = 015:20:38.566070 SYS_mprotect(0xb76ef000, 8192, 1) = 015:20:38.566185 SYS_mprotect(0x08049000, 4096, 1) = 015:20:38.566288 SYS_mprotect(0xb7726000, 4096, 1) = 015:20:38.566381 SYS_munmap(0xb76f5000, 76469) = 015:20:38.566522 __libc_start_main(0x80483e4, 1, 0xbfab04e4, 0x8048410, 0x8048400 15:20:38.566667 puts("Hello world" 15:20:38.566811 SYS_fstat64(1, 0xbfab0310, 0xb76f0ff4, 0xb76f14e0, 0x80484c0) = 015:20:38.566936 SYS_mmap2(0, 4096, 3, 34, -1) = 0xb770700015:20:38.567126 SYS_write(1, "Hello world\n", 12Hello world) = 1215:20:38.567282 <... puts resumed> ) = 1215:20:38.567348 SYS_exit_group(0 15:20:38.567454 +++ exited (status 0) +++

You need to carefully monitor the order and arguments of selected functions such as open() [used to open and possibly create a file or device] or chown() [used to change ownership of a file] so that you can spot simple kinds of race conditions or security related problems. This is quite useful for evaluating the security of binary programs to find out what kind of changes made to the system.

The ltrace command can be used to trace memory usage of the malloc() and free() functions in C program. You can calculate the amount of memory allocated as follows:
[node303 ~]$ ltrace -e malloc,free ./simulator arg1 agr2 arg3
The ltrace will start ./simulator program and it will trace the malloc() and free() functions. You can find out I/O problems as follows:
[node303 ~]$ ltrace -e fopen,fread,fwrite,fclose ./simulator arg1 agr2 arg3
You may need to change function names as your programming languages or UNIX platform may use different memory allocation functions.

The ld.so or / ld-linux.so used as follows by Linux:

To load the shared libraries needed by a program.To prepare the program to run, and then runs it.

Type the following command:
# cd /lib
For 64 bit systems:
# cd /lib64
Pass the --list option, enter:
# ./ld-2.5.so --list /path/to/executable

From the man page:

--verify verify that given object really is a dynamically linked object we can handle --library-path PATH use given PATH instead of content of the environment variable LD_LIBRARY_PATH --inhibit-rpath LIST ignore RUNPATH and RPATH information in object names in LIST

The LD_LIBRARY_PATH can be used to set a library path for finding dynamic libraries using LD_LIBRARY_PATH, in the standard colon seperated format:
$ export LD_LIBRARY_PATH=/opt/simulator/lib:/usr/local/lib
The LD_PRELOAD allow an extra library not specified in the executable to be loaded:
$ export LD_PRELOAD=/home/vivek/dirhard/libdiehard.so
Please note that these variables are ignored when executing setuid/setgid programs.

Top 5 Linux DVD RIP Software

A DVD ripper software allows you to copying the content of a DVD to a hard disk drive. You transfer video on DVDs to different formats, or make a backup of DVD content, and to convert DVD video for playback on media players, streaming, and mobile phone. A few DVD rippers software can copy protected disks so that you can make discs unrestricted and region-free.

Please note that most of the following programs can rip encrypted DVDs, as long as you have libdvdcss2 installed as described here. Please check the copyright laws for your country regarding the backup of any copyright-protected DVDs and other media.

AcidRip is an automated front end for MPlayer/Mencoder (ripping and encoding DVD tool using mplayer and mencoder) written in Perl, using Gtk2::Perl for a graphical interface. Makes encoding a DVD just one button click! You can install it as follows under Debian / Ubuntu Linux:
$ sudo apt-get install acidrip

Fig.01: Linux Ripping And Encoding DVD's With AcidRip Software Fig.01: Linux Ripping And Encoding DVD's With AcidRip Software


On the Preview tab you can choose to watch a bit of a preview of the resulting movie:
Fig.02: Preview your DVD rip Fig.02: Preview your DVD rip


And when you are ready, click the Start button to rip DVDs.

=> Download acidrip

dvd::rip is a full featured DVD copy program written in Perl i.e. fron end for transcode and ffmpeg. It provides an easy to use but feature-rich Gtk+ GUI to control almost all aspects of the ripping and transcoding process. It uses the widely known video processing swissknife transcode and many other Open Source tools. dvd::rip itself is licensed under GPL / Perl Artistic License. You can install dvd::rip as follows under Debian / Ubuntu Linux:
$ sudo apt-get install dvdrip

Fig.03: dvd::rip in action Fig.03: dvd::rip in action


You need to configure dvd::rip before you actually start a project. See the documentation for more information.

=> Download dvd::rip

HandBrake is an open-source, GPL-licensed, multiplatform, multithreaded video transcoder, available for MacOS X, Linux and Windows. It can rip from any DVD or Bluray-like source such as VIDEO_TS folder, DVD image, real DVD or bluray (unencrypted -- removal of copy protection is not supported), and some .VOB, .TS and M2TS files. You can install HandBrake under Debian or Ubuntu Linux as follows:
$ sudo apt-get install handbrake-gtk

Fig.04: HandBrake in action Fig.04: HandBrake in action

=> Download HandBrake

K9copy is a KDE DVD Backup tool. It allows the copy of a DVD9 to a DVD5. It is also known as a Linux DVD shrink. It supports the following features:

The video stream is compressed to make the video fiton a 4.7GB recordable DVDDVD BurningCreation of ISO imagesChoosing which audio and subtitle tracks are copied.Title preview (video only)The ability to preserve the original menus.

To install k9copy, enter:
$ sudo apt-get install k9copy

Fig.05: k9copy - Linux dvd shrink in action Fig.05: k9copy - Linux dvd shrink in action

=> Download k9copy

thoggen is a DVD backup utility ('DVD ripper') for Linux, based on GStreamer and Gtk+ toolkit. Thoggen is designed to be easy and straight-forward to use. It attempts to hide the complexity many other transcoding tools expose and tries to offer sensible defaults that work okay for most people most of the time. It support the following features:

Easy to use, with a nice graphical user interface (GUI).Supports title preview, picture cropping, and picture resizing.Language Selection for audio track (no subtitle support yet though).Encodes into Ogg/Theora video.Can encode from local directory with video DVD files.Based on the GStreamer multimedia framework, which makes it fairly easy to add additional encoding formats/codecs in future.

You can install thoggen as follows:
$ sudo apt-get install thoggen

Fig.06: Thoggen in action Fig.06: Thoggen in action

=> Download thoggen

=> You need to install various libraries to use the above mentioned tools such as (yum or apt-get commands will install them automatically for you):

libdvdcss2 - Simple foundation for reading DVDs - runtime libraries.libdvdnav4 - DVD navigation library.libdvdread4 - library for reading DVDs.

=> mencoder - Personally, I use mencoder to rip my DVDs into .avi files as follows:

mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate="1200" -vf scale -zoom -xy 640 -oac mp3lame -lameopts br=128 -o /nas/videos/my-movies/example/track2.avi

Please note that AcidRip, is a graphical frontend for mencoder.

=> VLC - Yes, VLC can rip DVDs too.

=> Transcode is a suite of command line utilities for transcoding video and audio codecs, and for converting between different container formats. Transcode can decode and encode many audio and video formats. Both K9Copy and dvd::rip are a graphical frontend for transcode.

=> Wine - It is an open source software for running Windows applications on other operating systems. You can use popular MS-Windows application such as DVDFab to rip encrypted DVD's and DVD Shrink to shrink them to smaller size. I do not *recommend* and encourage this option as it goes against the FOSS philosophy. The following screenshot based on trial version of DVDFab:

Fig.07: Running DVDFab under Wine v1.2.2 Fig.07: Running DVDFab under Wine v1.2.2

Have a favorite Linux DVD ripper software or ripping tip? Let's hear about it in the comments below.