Archive for the 'Web' category

Configuring Ooma

 | February 7, 2011 5:09 PM

Ooma is awesome.  I have had it for over two years and love the fact that I have never had to pay a monthly fee, never had to pay for long distance, never had to worry about it breaking, etc.

However I never tried to optimize the configuration of my Ooma until today.

Quality of Service

The Ooma is setup to be in front of my router “so that Ooma can intelligently prioritize voice traffic over other traffic.”

Ooma QoS Topology

Ooma’s Configuring Quality of Service document recommends configuring the upstream internet speed based on your SpeedNet results.  It turned out the default setting of 384 Kbps was about 10% of my actual upstream speed.  Ooma’s Learning more about Ooma Quality of Service (QoS) document recommended:

For the most optimum results, it is best to configure your "Upstream Internet Speed" to be 15-20% less than your measured upstream bandwidth.

I did three tests and got 3.46 Mb/s, 3.97 Mb/s and 3.60 Mb/s.  The average of these three is 3.68 Mb/s so I configured my Ooma to 85% of this value which is 3125 Kbps.

I was going to update the reserve bandwidth for calls from the default of 130 Kbps to 215 Kbps.  But after reading this forum about Quality of Service Settings I concluded it won’t make a difference.  I can’t change the codec used from the default codec (iLBC) to the high-bandwidth codec (G711) so I can only assume it uses the default codec.  In this forum it says to contact Ooma which I did and Ooma promptly changed it.  Ooma said the high-bandwidth codec takes up 90- 100 Kbps which is less than the default of 130 Kbps.

In conclusion changing the QoS settings doesn’t change the voice quality, it only changes how much data is available upstream when you are making a call.  But it was worth investigating since I found out how to improve the voice quality.

Port Forwarding

I set up port forwarding from my Ooma to my router for VNC and SSH.  First I forwarded ports 22 and 5900 TCP from Ooma to my router.  I found the router’s ethernet address on the 172.25.35 network using Airport Utility.

Then I configured the iMac to port forward.

  1. Configured to use DHCP with manual address 10.0.1.201 (Settings –> Network –> Airport –> Advanced –> TCP/IP.  )  I chose 201 because that’s supposedly out of the range of normal DHCP addresses.
  2. Used Airport Utility to port forward.  Went to Manual Setup –> Advanced –> Port Mapping and added Apple Remote Desktop and added SSH port mappings.

Port Forward has instructions for setting up a static IP address and for port forwarding with the Airport Extreme but they are outdated.  However I couldn’t find anything better.

Real VNC has a page on port forwarding for VNC and on that page is a link to a test page to see if your port forwarding is working.

What I found was I was only able to truly test if port forwarding was working when I was off my LAN.  Even when trying to use the outside IP address while within my LAN did not work.

Share

Building a WordPress Blog People Want to ReadTonight I finished reading Scott McNulty’s book, Building a WordPress Blog People Want to Read.  It’s a good book for beginners wanting to learn how to use WordPress.  But I think the title is misleading, it doesn’t teach how to write blog content that people want to read.

Something new I learned while reading this book was about the admin functionality to convert categories to tags or tags to categories.  Simply go to your Dashboard, go to Tools > Import and select Categories and Tags Converter.  The URL for converting categories to tags is /wp-admin/admin.php?import=wp-cat2tag and for converting tags to categories is /wp-admin/admin.php?import=wp-cat2tag&step=3.

I also learned about Steve DeGraeve’s Favicon Generator which seems somewhat useful.

Share

WordPress Emoticons

 | July 28, 2009 3:00 AM

Building a WordPress Blog People Want to ReadI have been using emoticons for awhile in my posts but I did not about the breadth of them until I read about them in Scott McNulty’s book, Building a WordPress Blog People Want to Read.

Scott points to WordPress Codex’s helpful document, Using Smilies.  Now I know how to LOL. :lol:

You can also replace the emoticons with your own set by replacing the files in wp-includes/images/smilies. You just have to use the same file names.

Share

TweetDeck's posterous - All things TweetDeck and Twitter When it comes to Twitter desktop clients everyone I know uses TweetDeck.  But being the questioning type that I am I decided to do some research and that is when I discovered Mashable!  They had two great articles to help me decide, Twitter Desktop Apps and Seesmic vs. TweetDeck.

In the end I decided to install both Seesmic Desktop and TweetDeck.  TweetDeck is prettier, gives off a cool vibe, like you’re cool for using it.  Be part of the cool crowd and use TweetDeck.

Seesmic Seesmic isn’t as cool looking and has kind of a cartoonish icon.  My first impression was not as good and I ended up using TweetDeck more.

But I went back to Seesmic and am staying with it for a few reasons.

  1. When you look at your replies in Seesmic you can determine to which tweet was the reply you made.  I cannot figure out how to do that in TweetDeck.
    Update 07-27-2009: Previously when I clicked on the “in reply to” in TweetDeck it would not work.  But for my newer replies it is working and it displays it nicely in the client instead of opening a new browser window like Seesmic does.
  2. In TweetDeck whenever you shorten a URL with bit.ly it does not associate this shortened URL with your bit.ly account.  Since it does not do that you cannot track how many times people clicked on your URL.  In Seesmic you can configure it to know about your bit.ly account by giving your username and API key (which you can find in your account settings).
  3. This is more qualitative but Seesmic has been developing their product at a faster pace.

For now I am going to stay with Seesmic but considering the rapid pace and competition amongst the various Twitter desktop clients, I might be switching again soon.

What Twitter desktop client do you use and why?

Share

Monty 2009-07-13

Twitter is pretty fascinating.  Please kill me if I start twittering things like “Going to bathroom.”

Share

su.pr versus bit.ly

 | July 11, 2009 1:13 PM

First there was tinyurl.com.  Does anyone use them anymore?

Then came bit.ly.

bit.ly Shorten, share, and track your links

Now there is a new competitor, su.pr.

Su.pr

Su.pr and bit.ly both do similar things:

  1. shorten URL’s
  2. post to Twitter
  3. track your links

Su.pr has the following advantages:

  1. posts to Facebook
  2. very rich tracking statistics which are updated quickly
  3. tracks retweets
  4. automatically posts your link to StumbleUpon
  5. can schedule posts in the future

You can easily set up your Twitter to automatically post to Facebook but in some cases you may not want to do that.  I started using su.pr for my new LoveNorthKorea blog because I didn’t want to automatically post to Facebook from my @luvnorthkorea Twitter account.

Bit.ly has the following advantages:

  1. Bit.ly URL’s seem to be 1 character shorter.
  2. Bit.ly tracks if your shortened URL has also been shortened by others and tracks how many people used your shortened URL.
  3. Bit.ly makes it easy to copy the shortened URL so you can reuse it.
  4. When you click on a bit.ly link you go directly to the page.  When you click on a su.pr link you have a StumbleUpon toolbar on top so it feels like you are in the StumbleUpon world.

I can see some advantages to having the StumbleUpon toolbar on top of the page.  It allows users immediate access to their StumbleUpon account and makes it easy for them to vote up or down the page.  On the other hand though it is a bit intrusive.

What do you think of the StumbleUpon toolbar? Click here to see an example of what I mean.

Update 07-27-2009: I have become too frustrated with the intrusive StumbleUpon toolbar.  I am no longer using su.pr.

Share

Blogging to a Six-Figure Income

 | July 10, 2009 7:10 PM

ProBlogger: Secrets for Blogging Your Way to a Six-Figure IncomeIn a day I read the whole book ProBlogger: Secrets for Blogging Your Way to a Six-Figure Income by Darren Rowse and Chris Garrett.  Normally I take a very long time to read a book but this book was very easy to read.

I had heard of ProBlogger before because of the website ProBlogger.net, .  I hadn’t looked at the site until after I read the book but it’s a pretty impressive site.

I am not under the illusion that blogging to a six-figure income will be easy.  In fact the authors make it pretty clear, in spite of the title, how difficult it is to do so.  Here is an interesting quote from TwiTip, a blog edited by Darren Rowse.

… it isn’t the same as being one of the big-guns of blogging, earning 6 or 7 figures a year in stable and ever increasing income.  There are very, very few of those (and they all have big followings, as I mentioned in the last post).  While the average income for blogs in 2008 was $6,000, that was influenced heavily by the top 1% of bloggers who earn $200k plus.  Look at the top 10%, and the average income is down to only $19k.

Twitter Tips for Beginners: Lessons from the Evolution of Blogging Part 5 – Monetisation

Though the book is full of a lot of useful information the two important things I learned about blogging.

  1. Blog niches not general personal blogs like this one.
  2. Create compelling content that will get your readers to bookmark or subscribe to your blog.

I was thinking before about the niches idea.  ProBlogger convinced me that not only was this a good idea but in fact it’s the only way to proceed.  I am thinking of creating separate blogs about North Korea, fatherhood, blogging, and my causes (i.e. human rights, creation care, etc.)

However I had not thought about the compelling content issue.  Can I really create compelling content?  Am I a good enough blogger?

Share

twuffer

I searched for a way to schedule tweets for a future time like I schedule blog posts.  Three different services showed up at the top of my search, Tweet Later, FutureTweets and Twuffer.  Tweet Later immediately turned me off by how ugly they were.  FutureTweets looked the most attractive but then I realized I had to register for its service.

With Twuffer I could simply use my Twitter username and password.  It proved pretty easy to use its service which I did to schedule tweets while I was on my cruise vacation last week.

twuffer

Share

If a post is protected and the user does not have permission to view the post then the User Permissions Plugin redirects the user to the index page of the website, i.e. “/”.

On my blog I had previously updated this plugin so that the user is redirect to the Protected Posts page.  I have since updated the plugin to redirect to the login page if the user does not have permission to view the post.  This is because on my blog if a user does not have permission it is most likely because she is not registered and/or not logged in.  Once the user logs in she will be redirected to the post she intended to view.

To figure out how to do this I followed several steps.

  1. Figure out what properties of the post were available to me.To do this I used the new Reflection API in PHP 5 to find this information.
    Reflection::export(new ReflectionObject($post))

    It turned out that there was a page describing all the post properties available in the API.

  2. Figure out how to get information about the blog itself.  Fortunately there is a simple get_bloginfo template tag.  I used this to get the URL of the blog.
  3. Figure out how to create the login URL and redirect to that URL.  I determined that though my URL permalink structure is site-url/year/month/day/post-name, e.g. http://www.kimplicity.com/fkim/blog/2009/06/12/sample-post/, that if I gave a URL of the structure site-url/post-name that it would properly redirect.  But then I determined that an even better solution would be to use the URL site-url?p=ID where ID is the post ID.

Here are the modifications I made.

*** user-permissions.php
***************
*** 98,104 ****
  {
    if (is_single () || is_page ()) {
      if (empty($id) || $id == $post->ID) {
!       $permissions->redirect ();
      }
    }
    else
--- 98,104 ----
  {
    if (is_single () || is_page ()) {
      if (empty($id) || $id == $post->ID) {
!       $permissions->redirect ($post->ID);
      }
    }
    else
*** permissions.php
***************
*** 155,163 ****
!       function redirect ()
  {
    if ($this->redirect_read > 0)
      wp_redirect (get_permalink ($this->redirect_read));
!   else
!     wp_redirect ('/fkim/blog/2009/05/28/protected-posts/');
    die ();
  }
}
--- 155,166 ----
!       function redirect ($postid)
  {
    if ($this->redirect_read > 0)
      wp_redirect (get_permalink ($this->redirect_read));
!   else {
!     $site_url = get_bloginfo('siteurl');
!     $login_url = $site_url . '/wp-login.php?redirect_to=' .
!                  $site_url . '/?p=' . $postid;
!     wp_redirect ($login_url);
!   }
    die ();
  }
}
Share

As mentioned previously, I installed the User Permissions Plugin (version 0.8.4) so that I could control who gets to read my more personal posts.  The plugin was working great until I realized that it was denying access to posts that it should not be.

First I had to figure out how to debug WordPress plugins.  I first tried the wp pear debug plugin but I could not figure out how to get it to output anything.  Later I realized it was making things worse because for some reason it cleared all the roles from the current user.  Then I found the WiPeD debug plugin which was simple to use.

After many hours of debugging I determined that the problem was an incompatibility between the User Permissions Plugin and the Yet Another Related Posts Plugin (YARPP).  The problem was that if a public post had at least one related post that was protected the User Permissions Plugin would redirect the user away from the public post.

The simple solution was to not redirect if the post that is protected is not the post being displayed.  The trick was finding the post ID but fortunately this article, Retrieve and Get WordPress Post ID Outside the Loop as PHP Variable, turned out to be immensely helpful.

It turns out there are three different ways to get the post ID.

  1. global $wp_query;
    $post_id = $wp_query->post->ID;
  2. global $post;
    $post_id = $post->ID;
  3. global $id;
    $post_id = $id;

Using this information I modified user.permissions.php in the User Permissions Plugin source and now this plugin works happily with YARPP.  Here are the modifications I made.  I sent these modifications to the plugin author, John Godley.

***************
*** 90,109 ****
  {
    if (!empty ($posts))
    {
!           global $current_user, $id;

!           foreach ($posts AS $idx => $post)
      {
        $permissions = Permissions::get ($post->ID);
        if ($permissions && $permissions->can_read ($current_user) == false)
        {
!               if (is_single () || is_page ()) {
!                 if (empty($id) || $id == $post->ID) {
!                   $permissions->redirect ();
!                 }
!               }
          else
!                 unset ($posts[$idx]);
        }
      }

--- 90,106 ----
  {
    if (!empty ($posts))
    {
!           global $current_user;

!           foreach ($posts AS $id => $post)
      {
        $permissions = Permissions::get ($post->ID);
        if ($permissions && $permissions->can_read ($current_user) == false)
        {
!               if (is_single () || is_page ())
!                 $permissions->redirect ();
          else
!                 unset ($posts[$id]);
        }
      }
Share