• Home

  • Custom Ecommerce
  • Application Development
  • Database Consulting
  • Cloud Hosting
  • Systems Integration
  • Legacy Business Systems
  • Security & Compliance
  • GIS

  • Expertise

  • About Us
  • Our Team
  • Clients
  • Blog
  • Careers

  • VisionPort

  • Contact
  • Google Voice first impressions

    Jon Jensen

    By Jon Jensen
    August 13, 2009

    I’ve been using Google Voice on and off for about a week now, and wanted to share my first impressions.

    Google Voice is still available only by invite, but I only had to wait about 3 days to get access. Signup was quick and easy, and doesn’t cost any money. The hardest part was selecting a phone number – you can choose one from most anywhere in the United States, but as far as I know you can’t change it later, at least not easily. I finally got the Montana phone number I’ve always wanted!

    Simultaneous multiple call forwarding: The feature I was most aware of beforehand is having your Google Voice number forward calls to as many other numbers as you want. This is actually better than I expected, because it calls the other numbers simultaneously, not in series, so there’s very little delay to the caller compared with directly calling. Whichever phone you answer first and tell the robot lady “1”, is the one that takes the call.

    Android integration (not VoIP): I was most excited to use Google Voice as a VoIP client on my Android phone, but that is a feature I apparently imagined all by myself. The Android Google Voice client still uses cell phone minutes and goes through the cell …


    mobile

    Perl+Postgres: changes in DBD::Pg 2.15.1

    Greg Sabino Mullane

    By Greg Sabino Mullane
    August 12, 2009

    DBD::Pg, the Perl interface to Postgres, recently released version 2.15.1. The last two weeks has seen a quick flurry of releases: 2.14.0, 2.14.1, 2.15.0, and 2.15.1. Per the usual versioning convention, the numbers on the far right (in this case the “dot one” releases) were simply bug fixes, while 2.14.0 and 2.15.0 introduced API and/or major internal changes. Some of these changes are explained below.

    From the Changes file for 2.15.0:

    CHANGE:
     - Allow execute_array and bind_param_array to take oddly numbered items, 
       such that DBI will make missing entries undef/null (CPAN bug #39829) [GSM]

    The Perl Database Interface (DBI) has a neat feature to allow you to execute many sets of items at one time, known as execute_array. The basic format is to pass in an list of arrays, in which each array contains the placeholders needed to execute the query. For example:

    ## Create a simple test table with two columns
    $dbh->do('DROP TABLE IF EXISTS people');
    $dbh->do('CREATE TABLE people (id int, fname text)');
    
    ## Pass in all ids as a single array
    my @numbers = (1,2,3);
    
    ## Pass in all names as a single array
    my @names = ("Garrett", "Viktoria", …

    database open-source perl postgres

    More PostgreSQL and SystemTap

    Josh Tolley

    By Josh Tolley
    August 5, 2009

    Recently I’ve been working on a database with many multi-column indexes, and I’ve wondered how often all the columns of the index were used. Many of the indexes in question are primary key indexes, and I need all the columns to guarantee uniqueness, but for non-unique indexes, it would make sense to remove as many indexes from the column as possible. Especially with PostgreSQL 8.3 or greater, where I can take advantage of heap-only tuples[1], leaving columns out of the index would be a big win. PostgreSQL’s statistics collector will already tell me how often an index is scanned. That shows up in pg_stat_all_indexes. But for a hypothetical index scanned 100 times, there’s no way to know how many of those 100 scans used all the columns of the index, or, for instance, just the first column.

    First, an example. I’ll create a table with three integer columns, and fill it with random data:

    5432 josh@josh# CREATE TABLE a (i INTEGER, j INTEGER, k INTEGER);
    CREATE TABLE
    5432 josh@josh*# INSERT INTO a SELECT i, j, k FROM (SELECT FLOOR(RANDOM() * 10) AS i, FLOOR(RANDOM() * 100) AS j, FLOOR(RANDOM() * 1000) AS k, GENERATE_SERIES(1, 1000)) f;
    INSERT 0 1000
    5432 josh@josh*# CREATE INDEX a_ix ON a …

    postgres

    Look Ma, I made an iPhone Enterprise Application!

    David Christensen

    By David Christensen
    August 3, 2009

    One of our clients recently came to us for help with implementing an iPhone Enterprise application. This particular application involved deploying specific signed mail configurations for customers with iPhones. This was primarily a server-side application, although the front-end interface was created using the DashCode development tools from Apple. Although this was a web application, the DashCode integration enabled us to create the interface in a way that it appeared to be a native application on the iPhone. Client-side validation was performed in a way that for all intents and purposes appeared native.

    The backend was a traditional CGI script which generated the .mobileconfig configuration payloads to easily integrate the customer’s mail server information into the iPhone’s Mail application. The backend was written to support any number of accounts deployed per customer, and the resulting payload was signed and verified by the customer’s PEM key.

    We integrated openssl’s pkcs12 support to transparently sign the generated dynamic mobileconfig. This was keyed off of the client’s deployment key, so all of the generated keys were automatically indicated as trusted and registered by …


    mobile

    Slony, sl_status and diagnosing a particular type of lag

    Selena Deckelmann

    By Selena Deckelmann
    July 31, 2009

    During some routine checking on a slony cluster, Greg noticed something curious. Replication was still happening between the master and a couple slaves, but we were seeing our indicator for lag inside of slony increasing.

    To check out the status of slony replication, you will typically take a look at the view ‘sl_status’:

    mydatabase=# select * from sl_status; 
     st_origin | st_received | st_last_event |      st_last_event_ts      | st_last_received |    st_last_received_ts     | st_last_received_event_ts | st_lag_num_events |       st
    _lag_time       
    -----------+-------------+---------------+----------------------------+------------------+----------------------------+---------------------------+-------------------+---------
    ----------------
             2 |           1 |       2697511 | 2008-04-30 02:40:06.034144 |          2565031 | 2008-04-14 15:31:32.897165 | 2008-04-14 16:24:08.81738 |            132480 | 15 days 
    10:16:03.060499
    (1 row)

    This view pulls data out of sl_event and sl_confirm, two tables that keep track of the forward progress of replication. Every time there is an event—​SYNCs, DDL changes, slony administrative events—​a row is added to sl_event. Slony is very chatty …


    postgres

    Comparing databases with check_postgres

    Greg Sabino Mullane

    By Greg Sabino Mullane
    July 28, 2009

    One of the more recent additions to check_postgres, the all-singing, all-dancing Postgres monitoring tool, is the “same_schema” action. This was necessitated by clients who wanted to make sure that their schemas were identical across different servers. The two use cases I’ve seen are servers that are being replicated by Bucardo or Slony, and servers that are doing horizontal sharding (e.g. same schema and database on different servers: which server you go to depends on (for example) your customer id). Oft times a new index fails to make it to one of the slaves, or some function is tweaked on one server by a developer, who then forgets to change it back or propagate it. This program allows a quick and automatable check for such problems.

    The idea behind the same_schema check is simple: we walk the schema and check for any differences, then throw a warning if any are found. In this case, we’re using the term “schema” in the classic sense of a description of your database objects. Thus, one of the things we check is that all the schemas (in the classic RDBMS sense of a container of other database objects) are the same, when running the “same_schema” …


    database open-source perl postgres

    SDCH: Shared Dictionary Compression over HTTP

    Jon Jensen

    By Jon Jensen
    July 27, 2009

    Here’s something new in HTTP land to play with: Shared Dictionary Compression over HTTP (SDCH, apparently pronounced “sandwich”) is a new HTTP 1.1 extension announced by Wei-Hsin Lee of Google last September. Lee explains that with it “a user agent obtains a site-specific dictionary that then allows pages on the site that have many common elements to be transmitted much more quickly.” SDCH is applied before gzip or deflate compression, and Lee notes 40% better compression than gzip alone in their tests. Access to the dictionaries stored in the client is scoped by site and path just as cookies are.

    The first client support was in the Google Toolbar for Internet Explorer, but it is now going to be much more widely used because it is supported in the Google Chrome browser for Windows. (It’s still not in the latest Chrome developer build for Linux, or at any rate not enabled by default if the code is there.)

    Only Google’s web servers support it to date, as far as I know. Someone intended to start a mod_sdch project for Apache, but there’s no code at all yet and no activity since September 2008.

    It is interesting to consider the challenge this will have on HTTP proxies that filter …


    browsers hosting networking security compression

    Fedora goes up to eleven

    Daniel Browning

    By Daniel Browning
    July 23, 2009

    I upgraded to Fedora Core 11 this week, up from 9. What really surprised me is how fast it is. I don’t recall ever having such a noticably faster and responsive desktop after a distro upgrade. Everything is more responsive and instantaneous. Even though FC9 didn’t seem particularly slow, I realize now that I had been spending time just waiting for the software to catch up. I don’t know where the credit is due. Could be anything from the kernel to XFCE to the apps. But I like it.

    Normally, most SELinux issues occur when it is enabled. But after the upgrade I ran into one of the opposite variety: the gedit program threw an error on every file save. The 244605 and 477070 tickets might be the same issue I ran into. I worked around the problem by switching to ‘kate -u’.

    I need at least four different text editors in order to enjoy using the computer. How could anyone stand the monotony of a single text editor all day? Right now I’m doing:

    • gvim for detailed things
    • vanilla vim for when gvim is too awesome.
    • kate for vogon poetry
    • jedit for when I get that certain IDE feeling (you know the one)
    • emacs for inducing carpal tunnel syndrome

    It’s also important to switch out text editors at …


    redhat linux
    Previous page • Page 199 of 222 • Next page