If you are like me and never delete email, txt messages or anything else then chances are you like to save all your mobile phone voicemail messages too. This is a problem because mobile phone carriers are not known to hand out unlimited storage for voicemail messages. To solve this I tried using a service called YouMail which is a third-party voicemail service for mobile phones. It is a smart phone app for both IOS and Android giving users the ability to configure voicemail to email, playing custom voicemail greetings, caller id name lookup and even transcribe messages for a fee.
I have used YouMail for a couple of months and don’t know how I lived without it. The app interface is very easy to use just like visual voicemail but has the added benefit of being accessible through a website for computers. The best feature for me is the ability to forward voicemail messages right from my email account. Many times a company will call my number looking for someone else so from my email account or YouMail account I can send that message along to the correct person.
Also by having the message sent to my email account I now have a copy of that message forever granted I don’t run out of space in my gmail account. Now this is not something new Google Voice has provided these same services. Being a long time Google Voice user I believe YouMail is better in terms of providing better voicemail services since Google Voice has a lot more functionality than just voicemail.
I urge anyone looking for an alternate voicemail for their default smart phone visual voicemail try the free version of YouMail.
I ordered a Belkin N300 router a while back to install the Tomato router firmware. Well it took me a long time to get around to installing it but it was worth the wait. The router will support DD-WRT or Tomato but since DD-WRT is no longer open source I choose to use Tomato.
This process was a lot easier than I expected, only took me around 20 minutes from start to finish. As long as you make sure to download the correct firmware versions and make sure to set your computer to 192.168.2.8 when in the CFE menu it will go very smoothly.
To install Tomato use the below instructions. Use these directions at your own risk and if you brick your N300 I am not responsable. I recommend reading the instructions completely before attempting this procedure.
What you will need:
Windows computer with Internet Explorer
Belkin N300 Router
Network Patch Cable
DD-WRT Firmware Download
Tomato Firmware Download
Tomato Firmware Explanation
The first step is to get the router into CFE mode. To get there follow these steps.
1. While the unit is powered on Press the reset button for 30 secs
2. Keeping the reset button pressed, unplug the power (do not let up on the reset button)
3. Plug the power back in and wait for another 30 secs
4. You can now let up on the reset button
Once you completed this plug your Windows computer into any of ports 1-4 on the router and assign the computer an ip address of 192.168.2.8 with a subnet of 255.255.255.0. Now navigate to http://192.168.2.1 using Internet Explorer, it will look like the below screenshot.
Here you will upload the DD-WRT firmware, I used dd-wrt.v24-15396_NEWD-2_K2.6_mini_f7d3301.bin. Make sure to wait for the upload to complete and let the unit reset itself. Once it reboots the router will load the DD-WRT firmware. If you would like to use that then stop here and reset your computer to get an ip address via DHCP.
The next step is to upload the Tomato firmware using the DD-WRT firmware update tool. Upload the Tomato firmware version downloaded above, I used the tomato-K26USB-1.28.7497.1MIPSR2-Toastman-VLAN-RT-VPN.trx.
One that upload is complete the unit will restart and to login go to http://192.168.1.1.
Username: admin
Password: admin
I got these directions from FatWallet so if someone needs more specifics head here.
http://www.fatwallet.com/forums/expired-deals/1182506/m16829390/#m16829390
WordPress and Website Hosting
Searching for a good hosting company is like trying to find a needle in a haystack. I recently took up the task of find a new host for my websites so I could consolidate everything to 1 hosting company. In order to find a reliable hosting company and meet my requirements I created a list of guidelines to judge hosting companies.
1. They (the hosting company) owned the equipment and hardware the website hosting was provided on.
2. They were a small to med sized company where the owner/founder was still involved and interested in keeping business
3. Servers were not oversold and pushed to the limits of the hardware, and upgrade windows were after hours.
4. Support is helpful and available with a good response time.
5. Price is not a concern.
While some of this information is not public knowledge it was surprisingly easy to eliminate a lot of companies based on these guidelines. I was able to find a lot of information on webhostingtalk.com where there are many helpful forum members.
After my search concluded I found 1 hosting company that stood out to me and I gave it a try. Over the past 6 months of hosting with the new hosting company my sites have gone without any problems and I am very happy with my decision.
MddHosting.com is my hosting company now and their service is excellent. If you would like to sign up with them I would appreciate if you use my affiliate link below to sign up.
Are you trying to do a timezone conversion using php? To do that you will first need to install the php-pear-Date library. Use the following yum command on CentOS/Redhat to install this library.
yum -y install php-pear-Date
Once the yum command installs the library you will be able to use it by adding an include line to your code. At the top of your php page add the following line.
include("Date.php");
See below for examples on how to convert from one timezone to another using php and the Date.php library. Copy and paste this into your own code to test it out.
$timezone_var = "America/New_York";
$start_stamp = $start_row1['stamp']; // this is a datetime from a MySQL database result
$start_formated = date("m-d-Y h:i:s A",strtotime($start_stamp));
$f = new Date(strtotime($start_stamp));
$f->setTZByID("GMT");
$f->convertTZByID($timezone_var);
$start_convert = $f->format("%m-%d-%Y %r %A");
The options for your United States time zones are as follows:
Eastern Timezone – America/New_York
Central Timezone – America/Chicago
Mountain Timezone – America/Denver
Pacific Timezone – America/Los_Angeles
After doing an update on a Ubuntu 12.04 desktop with VirtualBox installed there was a problem starting any of the virtual machines. Each try to start a virtual machine the error in the screenshot below would pop up and not allow the virtual machine to start.
Result Code: NS_ERROR_FAILURE (0x80004005)
Component: Machine
Interface: IMachine {22781af3-1c96-4126-9edf-67a020e0e858}
To fix this problem run the command below.
sudo /etc/init.d/vboxdrv setup
Change default editor for crontab editor
By default crontab -e will use the vi text editor, some find this editor a little more challenging to use compared to nano. Changing the default editor only takes 1 command, or select it when opening crontab.
Open crontab with nano, even with the default editor still vi.
EDITOR=nano crontab -e
Change the default text editor for crontab and the operating system.
export EDITOR=nano crontab -e
If you are trying to display a graph from dynamic data the best way to carry out this is using a json data feed. I have an example of how I got a json data set to display within a highcharts graph. This was a lot easier than I though it would be and works very well. Below I have an example of how to write the javascript to display the graph then grab the data and insert it into the graph. I also have an example of how the json data looks.
This is what the graph looks like.
This is the javascript code to write the graph, be sure to include the highcharts library.
$(document).ready(function() {
chart_answer = new Highcharts.Chart({
chart: {
backgroundColor: '#ffffff',
borderColor: '#a2a2a1',
borderWidth: 0,
borderRadius: 0,
renderTo: 'answer_time_chart',
type: 'area',
plotBackgroundColor: '#fffdf6'
},
colors: ['#3399FF'],
legend: {
enabled: false
},
title: {
text: ''
},
tooltip: {
borderRadius: 0,
borderWidth: 0,
shadow: false,
style: {
fontSize: '7pt',
color: '#000000'
},
formatter: function() {
return 'Time: ' + this.x + '
Time: ' + (this.y/60|0) + ':' + (this.y % 60 < 10 ? '0':'')+(this.y % 60); }
},
xAxis: {
labels: {
rotation: -45,
x: 0,
y: 40,
style: {
color: '#333333'
}
},
lineWidth: 1,
lineColor: '#333333',
minPadding: 0,
maxPadding: 0,
title: {
text: ''
},
tickInterval: 2,
tickmarkPlacement: 'on'
},
yAxis: {
gridLineWidth: 0,
labels: {
formatter: function() {
return (this.value/60|0) + ':' + (this.value % 60 < 10 ? '0':'')+(this.value % 60); },
style: {
color: '#333333'
}
},
lineWidth: 1,
lineColor: '#333333',
min: 0,
minPadding: 0,
maxPadding: 0,
title: {
text: ''
}
}
});
This is the function used to insert the data into the graph.
var jsonURL = 'http://website.com/json-output.php?report=chart_answer';
jQuery.getJSON( jsonURL, function( data ){
var arr = [];
$.each(data.data, function(key, val) {
var y = val.y;
var customTooltip = val.customTooltip;
arr.push({y: y, customTooltip: customTooltip})
})
var cats = [];
$.each(data.categories, function(key, val) {
cats.push(val.cat)
})
chart_answer.xAxis[0].setCategories(cats);
var series = {data: arr};
chart_answer.addSeries(series);
});
Finally this is the json being output by the php page which was custom created.
{ "data": [ { "y": 2 }, { "y": 3 }, { "y": 3 }, { "y": 4 }, { "y": 4 }, { "y": 4 }, { "y": 3 }, { "y": 2 }, { "y": 2 }, { "y": 3 }, { "y": 3 }, { "y": 3 }, { "y": 4 }, { "y": 4 }, { "y": 4 }, { "y": 4 } ], "categories": [ { "cat": "4:45-5:00" } , { "cat": "5:00-5:15" } , { "cat": "5:15-5:30" } , { "cat": "5:30-5:45" } , { "cat": "5:45-6:00" } , { "cat": "6:00-6:15" } , { "cat": "6:15-6:30" } , { "cat": "6:30-6:45" } , { "cat": "6:45-7:00" } , { "cat": "7:00-7:15" } , { "cat": "7:15-7:30" } , { "cat": "7:30-7:45" } , { "cat": "7:45-8:00" } , { "cat": "8:00-8:15" } , { "cat": "8:15-8:30" } , { "cat": "8:30-8:45" } ], "tickmark": 4 }
If you setup your Asterisk server to email your voicemail messages as I explained how to do in an earlier post asterisk voicemail to gmail and now are getting your email sent to a gmail account you will have to download the wav file to listen to your message. There is now a Chrome browser plugin that will play the messages inside the email instead of downloading the message.
https://chrome.google.com/webstore/detail/hpioniioecjjbhbnnbhcifmgmoiibalo
Here is what a typical voicemail email looks like.
Once you have this chrome plugin installed the message will appear with a flash player.
Update: I have noticed this plugin is a little flaky and is not consistent. I like it when it works but lately the player has not showed up, to get it to work I disable the plugin restart chrome enable the plugin and restart chrome again. From the reviews it seems a lot of other people are having problems with this too.
One of my friends has a 17″ iMac that got the common LCD vertical line problem so I offered to take a look at it. To troubleshoot the computer and figure out what device was the issue I took some screenshots and emailed them to a working computer. When viewing the screenshots on a working computer screen they were clear without any vertical lines. This helped prove the case that the problem was with the LCD and not the logic board.
Taking apart the chassis was a little more challenging than I expected but with some help from youtube videos I was able to get the LCD extracted so I could find a part number which was LM171W02 (TL) (B2). I searched the internet for LCD suppliers and didn’t have much luck for an affordable screen. I saw a few new LM171W02 (TL) (B2) 17″ LCD’s for $1000 which doesn’t make any sense considering the iMac is worth half of that.
After scouring the web I finally found a refurbished screen that was in stock and more importantly it cost $260 shipped. The company I found was Code Micro which carries a large supply of replacement LCD’s including an ample amount of LM171W02 (TL) (B2) which came in handy. I called Code Micro to place my order and spoke with Ryan who found the LM171W02 (TL) (B2) LCD in stock so he got one shipped out to me that day. I had to wait 4 days since I opted for more affordable ground shipping. Opening the box I noticed how well packed the screen was. The LCD was double boxed and surrounded by bubble wrap and inside an anti static bag.
I was very excited to fix the iMac so I got right to work. About 15 minutes later I had the new LCD installed and the iMac fully assembled. I got everything plugged in and pressed the power button. Then disappointment struck, the screen didn’t illuminate. I rebooted the iMac a couple of times hoping for the best but I was out of luck. So I disconnected everything and started disassembly. I went thorough and double checked my work making sure all the connections were solid and correct, went back and tried it again. No screen again, ugh.
Since this was a Friday night I had to wait until Monday morning to call Ryan at Code Micro. After a quick chat with Ryan we started the RMA process of advanced replacement meaning the new LCD would ship right away and not rely on shipping the broken one back first. Later that day I had a tracking number for the new screen and a printable label to ship back the broken iMac LCD.
I got the new LCD last night and went right to work. Since the iMac was still disassembled it took me no time at all to get it all together and it was also the fourth time I was assembling the iMac. This time I was in luck and the screen worked on the first try without any vertical lines.
Overall it was pretty easy to replace the screen but it was disappointing getting a busted LCD the first time around. I do have to say Code Micro was very easy to work with and I would buy replacement parts from them again. Even though there was some shipping back and forth they picked up the tab for all of it and were very helpful.
If you get this PHP error on any of your pages there is a simple fix. Just increase the PHP memory size in /etc/php.ini
By default the value will look like the below line
memory_limit = 128M
Change it to something like this or above
memory_limit = 512M











