Month: July 2018

Software maker E2open plans more revenue, less BlackBerry

Supply chain management software maker E2open Inc (EOPN.O) expects its revenue to hit $100 million for the first time next fiscal year, after replacing its dependence on BlackBerry Ltd (BB.TO) and PC makers with a host of new customers.

Chief Executive Mark Woodward said he expected E2open, which went public a year ago, to boost its sales in the 12 months to February 2015 after adding up to 20 new enterprise customers in the current fiscal year.

“We do $80 million (in revenue) this year and we grow 30 percent next year. That should get us there,” Woodward said in an interview, referring to the $100-million revenue target.

E2open, which makes cloud-based software designed to assist companies in managing their supply chains, has more than doubled its annual revenue in the five years since Woodward took charge. Revenue in the fiscal year to February 28, 2013, was $75 million.

The company’s shares have risen about 35 percent since they began trading on the Nasdaq on July 26 last year.

Three of the six analysts covering E2open have a “strong buy” rating on the stock. The other three rate it “buy”, according to Thomson Reuters data. The company has a market capitalization of $460 million.

With a customer base that includes Coca-Cola Co (KO.N), Unilever Plc (ULVR.L), IBM (IBM.N) and Cisco Systems Inc (CSCO.O), E2open has been diversifying to cut its dependence on any one large customer.

Last year, that customer was Canadian smartphone maker BlackBerry (BBRY.O).

Woodward said he expected BlackBerry’s contribution to E2open’s revenue to fall to less than 3 percent in the current fiscal year from nearly 15 percent last year.

BlackBerry, which pioneered on-the-go email with its handsets and messaging systems, has slipped into tough times as it struggles to keep pace with nimbler rivals.

Woodward said BlackBerry’s quarterly shipments of about 7 million units were between a quarter and a third of the volume contracted when it became a customer of E2open four years ago.

“Their usage of our systems, just because they are selling less handsets, has come down dramatically,” said Woodward.

E2open has, on average, signed up 17 enterprise customers in each of the last two years. In total, it has 76 enterprise customers – those which buy E2open’s software as well as pay for access to its network of suppliers and trading partners.

Computer maker Dell Inc (DELL) brought in 22.5 percent of E2open’s revenue in fiscal 2011. Now, it accounts for less than 5 percent – even though its contribution in dollar terms has risen, Woodward said.

“The original deal that we signed with Dell was for $3.2 million for three years,” he said. “The last bill we signed with Dell was for $3.2 million per year.”

British mobile telephone company Vodafone Group Plc (VOD.L) (VOD.O) is the largest customer for Foster City, California-based E2open, having contributed 12.1 percent of the company’s revenue last fiscal year.

Another customer, Seagate Technology LLC (STX.O), held a 9 percent stake in E2open as of December last year.

Integrating C++ with QML

Introduction

Qt Quick’s QML language makes it easy to do many things, especially fancy animated user interfaces. However, some things either can’t be done or are not suitable for implementing in QML, such as:

  1. Getting access to functionality outside of the QML/JavaScript environment.
  2. Implementing performance critical functions where native code is desired for efficiency.
  3. Large and/or complex non-declarative code that would be tedious to implement in JavaScript.

As we’ll see, Qt makes it quite easy to expose C++ code to QML. In this blog post I will show an example of doing this with a small but functional application.

The example is written for Qt 5 and uses the Qt Quick Components so you will need at least Qt version 5.1.0 to run it.

Overview

To expose a C++ type having properties, methods, signals, and/or slots to the QML environment, the basic steps are:

  1. Define a new class derived from QObject.
  2. Put the Q_OBJECT macro in the class declaration to support signals and slots and other services of the Qt meta-object system.
  3. Declare any properties using the Q_PROPERTY macro.
  4. Call qmlRegisterType() in your C++ main program to register the type with the Qt Quick engine.

For all the details I refer you to the Qt documentation section Exposing Attributes of C++ Types to QML and the Writing QML Extensions with C++ tutorial.

Ssh Key Generator

For our code example, we want a small application that will generate ssh public/private key pairs using a GUI. It will present the user with controls for the appropriate options and then run the program ssh-keygen to generate the key pair.

I implemented the user interface using the new Qt Quick Controls since it was intended as a desktop application with a desktop look and feel. I initially developed the UX entirely by running the qmlscene program directly on the QML source.

The UI prompts the user for the key type, the file name of the private key to generate and an optional pass phrase, which needs to be confirmed.

The C++ Class

Now that have the UI, we will want to implement the back end functionality. You can’t invoke an external program directly from QML so we have to write it in C++ (which is the whole point of this example application).

First, we define a class that encapsulates the key generation functionality. It will be exposed as a new class KeyGenerator in QML. This is done in the header file KeyGenerator.h below.

#ifndef KEYGENERATOR_H
#define KEYGENERATOR_H

#include <QObject>
#include <QString>
#include <QStringList>

// Simple QML object to generate SSH key pairs by calling ssh-keygen.

class KeyGenerator : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged)
    Q_PROPERTY(QStringList types READ types NOTIFY typesChanged)
    Q_PROPERTY(QString filename READ filename WRITE setFilename NOTIFY filenameChanged)
    Q_PROPERTY(QString passphrase READ filename WRITE setPassphrase NOTIFY passphraseChanged)

public:
    KeyGenerator();
    ~KeyGenerator();

    QString type();
    void setType(const QString &t);

    QStringList types();

    QString filename();
    void setFilename(const QString &f);

    QString passphrase();
    void setPassphrase(const QString &p);

public slots:
    void generateKey();

signals:
    void typeChanged();
    void typesChanged();
    void filenameChanged();
    void passphraseChanged();
    void keyGenerated(bool success);

private:
    QString _type;
    QString _filename;
    QString _passphrase;
    QStringList _types;
};
#endif

Next, we need to derive our class from QObject. We declare any properties that we want and the associated methods. Notify methods become signals. In our case, we want to have properties for the selected key type, the list of all valid ssh key types, file name and pass phrase. I arbitrarily made the key type a string. It could have been an enumerated type but it would have made the example more complicated.

Incidentally, a new feature of the Q_PROPERTY macro in Qt 5.1.0 is the MEMBER argument. It allows specifying a class member variable that will be bound to a property without the need to implement the setter or getter functions. That feature was not used here.

We declare methods for the setters and getters and for signals. We also declare one slot called generateKey(). These will all be available to QML. If we wanted to export a regular method to QML, we could mark it with Q_INVOCABLE. In this case I decided to make generateKey() a slot since it might be useful in the future but it could have just as easily been an invocable method.

Finally, we declare any private member variables we will need.

C++ Implementation

Now let’s look at the implementation in KeyGenerator.cpp. Here is the source code:

#include <QFile>
#include <QProcess>
#include "KeyGenerator.h"

KeyGenerator::KeyGenerator()
    : _type("rsa"), _types{"dsa", "ecdsa", "rsa", "rsa1"}
{
}

KeyGenerator::~KeyGenerator()
{
}

QString KeyGenerator::type()
{
    return _type;
}

void KeyGenerator::setType(const QString &t)
{
    // Check for valid type.
    if (!_types.contains(t))
        return;

    if (t != _type) {
        _type = t;
        emit typeChanged();
    }
}

QStringList KeyGenerator::types()
{
    return _types;
}

QString KeyGenerator::filename()
{
    return _filename;
}

void KeyGenerator::setFilename(const QString &f)
{
    if (f != _filename) {
        _filename = f;
        emit filenameChanged();
    }
}

QString KeyGenerator::passphrase()
{
    return _passphrase;
}

void KeyGenerator::setPassphrase(const QString &p)
{
    if (p != _passphrase) {
        _passphrase = p;
        emit passphraseChanged();
    }
}

void KeyGenerator::generateKey()
{
    // Sanity check on arguments
    if (_type.isEmpty() or _filename.isEmpty() or
        (_passphrase.length() > 0 and _passphrase.length() < 5)) {
        emit keyGenerated(false);
        return;
    }

    // Remove key file if it already exists
    if (QFile::exists(_filename)) {
        QFile::remove(_filename);
    }

    // Execute ssh-keygen -t type -N passphrase -f keyfileq
    QProcess *proc = new QProcess;
    QString prog = "ssh-keygen";
    QStringList args{"-t", _type, "-N", _passphrase, "-f", _filename};
    proc->start(prog, args);
    proc->waitForFinished();
    emit keyGenerated(proc->exitCode() == 0);
    delete proc;
}

The constructor initializes some of the member variables. For fun, I used the new initializer list feature of C++11 to initialize the _types member variable which is of type QStringList. The destructor does nothing, at least for now, but is there for completeness and future expansion.

Getter functions like type() simply return the appropriate private member variable. Setters set the appropriate variables, taking care to check that the new value is different from the old one and if so, emitting the appropriate signal. As always, please note that signals are created by the Meta Object Compiler and do not need to be implemented, only emitted at the appropriate times.

The only non-trivial method is the slot generateKey(). It does some checking of arguments and then creates a QProcess to run the external ssh-keygen program. For simplicity and because it typically executes quickly, I do this synchronously and block on it to complete. When done, we emit a signal that has a boolean argument that indicates the key was generated and whether it succeeded or not.

QML Code

Now let’s look at the QML code in main.qml:

// SSH key generator UI

import QtQuick 2.1
import QtQuick.Controls 1.0
import QtQuick.Layouts 1.0
import QtQuick.Dialogs 1.0
import com.ics.demo 1.0

ApplicationWindow {
    title: qsTr("SSH Key Generator")

    statusBar: StatusBar {
    RowLayout {
        Label {
            id: status
            }
        }
    }

    width: 369
    height: 166

    ColumnLayout {
        x: 10
        y: 10

        // Key type
        RowLayout {
            Label {
                text: qsTr("Key type:")
            }
            ComboBox {
                id: combobox
                Layout.fillWidth: true
                model: keygen.types
                currentIndex: 2
            }
        }

        // Filename
        RowLayout {
            Label {
                text: qsTr("Filename:")
            }
            TextField {
                id: filename
                implicitWidth: 200
                onTextChanged: updateStatusBar()
            }
            Button {
                text: qsTr("&Browse...")
                onClicked: filedialog.visible = true
            }
        }

        // Passphrase
        RowLayout {
            Label {
                text: qsTr("Pass phrase:")
            }
            TextField {
                id: passphrase
                Layout.fillWidth: true
                echoMode: TextInput.Password
                onTextChanged: updateStatusBar()
            }

        }

        // Confirm Passphrase
        RowLayout {
            Label {
                text: qsTr("Confirm pass phrase:")
            }
            TextField {
                id: confirm
                Layout.fillWidth: true
                echoMode: TextInput.Password
                onTextChanged: updateStatusBar()
            }
        }

        // Buttons: Generate, Quit
        RowLayout {
            Button {
                id: generate
                text: qsTr("&Generate")
                onClicked: keygen.generateKey()
            }
            Button {
                text: qsTr("&Quit")
                onClicked: Qt.quit()
            }
        }

    }

    FileDialog {
        id: filedialog
        title: qsTr("Select a file")
        selectMultiple: false
        selectFolder: false
        nameFilters: 
        selectedNameFilter: "All files (*)"
        onAccepted: {
            filename.text = fileUrl.toString().replace("file://", "")
        }
    }

    KeyGenerator {
        id: keygen
        filename: filename.text
        passphrase: passphrase.text
        type: combobox.currentText
        onKeyGenerated: {
            if (success) {
                status.text = qsTr('<font color="green">Key generation succeeded.</font>')
            } else {
                status.text = qsTr('<font color="red">Key generation failed</font>')
            }
        }
    }

    function updateStatusBar() {
        if (passphrase.text != confirm.text) {
            status.text = qsTr('<font color="red">Pass phrase does not match.</font>')
            generate.enabled = false
        } else if (passphrase.text.length > 0 && passphrase.text.length < 5) {
            status.text = qsTr('<font color="red">Pass phrase too short.</font>')
            generate.enabled = false
        } else if (filename.text == "") {
            status.text = qsTr('<font color="red">Enter a filename.</font>')
            generate.enabled = false
        } else {
            status.text = ""
            generate.enabled = true
        }
    }

    Component.onCompleted: updateStatusBar()
}

The preceding code is a little long, however, much of the work is laying out the GUI components. The code should be straightforward to follow.

Note that we import com.ics.demo version 1.0. We’ll see where this module name comes from shortly. This makes a new QML type KeyGeneratoravailable and so we declare one. We have access to it’s C++ properties as QML properties, can call it’s methods and act on signals like we do withonKeyGenerated.

A more complete program should probably do a little more error checking and report meaningful error messages if key generation fails (we could easily add a new method or property for this). The UI layout could also be improved to make it properly resizable.

Our main program is essentially a wrapper like qmlscene. All we need to do to register our type with the QML engine is to call:

    qmlRegisterType<KeyGenerator>("com.ics.demo", 1, 0, "KeyGenerator");

This makes the C++ type KeyGenerator available as the QML type KeyGenerator in the module com.ics.demo version 1.0 when it is imported.

Typically, to run QML code from an executable, in the main program you would create a QGuiApplication and a QQuickView. Currently, to use the Qt Quick Components there is some additional work needed if the top level element is an ApplicationWindow or Window. You can look at the source code to see how I implemented this. I basically stripped down the code from qmlscene to the minimum of what was needed for this example.

Here is the full listing for the main program, main.cpp:

#include <QApplication>
#include <QObject>
#include <QQmlComponent>
#include <QQmlEngine>
#include <QQuickWindow>
#include <QSurfaceFormat>
#include "KeyGenerator.h"

// Main wrapper program.
// Special handling is needed when using Qt Quick Controls for the top window.
// The code here is based on what qmlscene does.

int main(int argc, char ** argv)
{
    QApplication app(argc, argv);

    // Register our component type with QML.
    qmlRegisterType<KeyGenerator>("com.ics.demo", 1, 0, "KeyGenerator");

    int rc = 0;

    QQmlEngine engine;
    QQmlComponent *component = new QQmlComponent(&engine);

    QObject::connect(&engine, SIGNAL(quit()), QCoreApplication::instance(), SLOT(quit()));

    component->loadUrl(QUrl("main.qml"));

    if (!component->isReady() ) {
        qWarning("%s", qPrintable(component->errorString()));
        return -1;
    }

    QObject *topLevel = component->create();
    QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);

    QSurfaceFormat surfaceFormat = window->requestedFormat();
    window->setFormat(surfaceFormat);
    window->show();

    rc = app.exec();

    delete component;
    return rc;
}

In case it is not obvious, when using a module written in C++ with QML you cannot use the qmlscene program to execute your QML code because the C++ code for the module will not be linked in. If you try to do this you will get an error message that the module is not installed.

The Ultimate Guide to Listings

Essentials in Resolving Duplicate Listing

One can discover more from various websites regarding the duplicate addresses in google my business which can be described as a situation where there is more than one listing of a similar entity or business in the google my business platform. There are a number of reasons that lead to these duplicate addresses in google my business which one can read more about them from various websites. Some of these scenarios include automation where data duplicates with minimal variations as it flows, unintentional building of another listing, data changes, violation of guidelines through spam to create another listing as well as lack of awareness of the guidelines put in place.

It is important first to learn if there are duplicate listing either through use of different tools that can enable one see the results for the listing or do searches manually in the google my business databases to see the number of listings. There are a variety of ways that one can read more about from various websites in order to discover more regarding these duplicates and resolve them. It is important to learn that duplicate addresses in google my business usually compete with each other for higher ranking hence google is likely to choose a single address that the users will be seeing. This can be a problem since Google may leave out the address that has more reviews and other features that enhance the ranking and choose one that is empty.

When resolving 2 listings that are both verified for the same entity with similar address, it is important to learn that merging them in google my business is not possible. It is important to learn more about how one of the addresses will be unverified so that it can be merged hence the duplicate listing in google my business will be resolved. Another problem of duplicate addresses in google my business is where the 2 listings are verified for the same entity with similar address, one therefore need to learn that merging them in google my business is not possible. It is therefore important to learn that one needs to read more from websites on how they can gain control over the address which they do not own hence follow the guidelines given to remove the verification from one of the addresses so that they can be merged. In situations where it is only one listing that has been verified, one needs to consult with google my business so that they can help resolve the duplicate listing.

Resolving the duplicate addresses in google my business is beneficial since it leads to enhanced rankings in the google my business platform which will have an impact on the user experience hence drives more traffic leading to increased revenues.

Resource: Full Article

Yahoo Ad Startup Acquisitions

Jakarta – Yahoo! management announced that the company recently acquired a new company engaged in the field of advertising, namely AdMovate.
On the company’s official website, Wednesday, July 17, 2013, management AdMovate said, “We started the company last year to make it easier for advertisers to create highly personalized offers via the mobile platform.”
Management said the company tried to keep the advertisers can reach consumers through ads that are personalized to match. And Yahoo! has a team with a similar vision.
“Yahoo! is willing to invest in a massive scale,” he says on the site. AdMovate management company hopes to realize his dream of building an effective mobile advertising services.
In a statement, the management of Yahoo! said, “This acquisition is part of our efforts to further develop our advertising technologies such as Apt, Genome, and Right Media.”
Yahoo! hopes that the advertisers can more easily advertise and advertising agencies can be more easily connect. The technology developed AdMovate expected to accelerate this development.
This action adds to list of companies that have made ​​acquisitions Yahoo! In May, Yahoo! bought the social networking site Tumblr with a value of U.S. $ 1.1 billion. Analysts expect, Tumblr is the largest acquisition in the history of corporate.
Buying Tumblr will meet the goals of Yahoo! CEO Marissa Mayer to expand the market share of the smartphone and tablet computer users. Tumblr paper presents a constantly changing, photos, and other digital content presented by users who can now connect through mobile applications. This service is also one of the most popular websites among teenagers and young adults, it is considered appropriate to the development of Yahoo! Mayer

Pre-Order Asus 31.5″ 4K IGZO Monitor for $3500

Asus is reportedly now taking pre-orders for its 31.5 inch monitor (PQ321Q) featuring Sharp’s anti-glare LED-backlit IGZO technology. It sports a screen resolution of 3840 x 2160, 140 pixels per inch, and not only cuts down on energy consumption but features an extremely long durability given that Sharp’s tech doesn’t constantly refresh the images. It’s all static until something moves on-screen.

The company introduced the new monitor last month, reporting that Sharp’s IGZO tech supports smaller transistors than amorphous silicon thanks to significantly higher electron mobility. It also not only reduces energy consumption, but reduces the monitor’s overall bulk as well: at 35 mm at its thickest point, the PQ321 is the thinnest 4K UHD monitor available today, the company said.

A Sharp rep said during CES 2013 in January that the 31.5 inch panel will be marketed to professionals first given the end-price. The prototype also had ten-point touch input which apparently didn’t make it into the company’s own PN-K321 31.5 inch IGZO monitor selling for $5,000 USD. The Asus model also doesn’t support touch.

The upcoming PQ321Q supports wide 176° horizontal and vertical viewing angles, 10 bit RGB “deep” color, and an 8 millisecond gray-to-gray response time. Other features include a 0.182 mm pixel pitch, a max brightness of 350 cd/m2, a max contrast ratio of 800:1, picture-by-picture support and HDCP support. The monitor’s typical power consumption is 93 watts.

On the connectivity front, the I/O panel has two HDMI ports, a DisplayPort, and an RS-232C port for old-school VGA connections. There’s also a 3.5 mm mini-jack for PC audio input, a 3.5 mm mini-jack for AV audio input, and a 3.5 mm mini-jack for earphones (for HDMI and DisplayPort).

Last month the company said that the new display is the “equivalent to four Full HD displays stacked side-by-side.” It can now be pre-ordered on Amazon here, and on Newegg here, both requesting $3,499.99 USD. The monitor is slated to arrive on July 16, 2013.

Mozilla ponders blinkers for your browser

Mozilla Labs has outlined an experiment it’s conducting in improving the personalisation web publishers can offer readers who browse their sites using Firefox.

The outfit says it’s been working on the idea since last year, when it “conducted a series of experiments in which a user’s browsing history could be matched with interests in categories like technology, sports and cooking.”

In return for opting in to the trial, lab rats were offered “insight into how they spend time online.”

Mozilla Labs is now wondering “what if these interests were also available for the user to share with the websites they visit to get a better, more personalized browsing experience” so that “content creators and consumers could benefit from Web-based interests”?

Here’s one scenario the outfit has imagined as resulting from this line of thinking:

“For example, let’s say Firefox recognizes within the browser client, without any browsing history leaving my computer, that I’m interested in gadgets, comedy films, hockey and cooking. As I browse around the Web, I could choose when to share those interests with specific websites for a personalized experience. Those websites could then prioritize articles on the latest gadgets and make hockey scores more visible.”

Some publishers have already pressed the API for this kind of thing into service, according to the Mozilla Blog, but the code is not in the wild and is being tested – technically and conceptually – as Mozilla figures out how people will react to websites that dynamically change content based on readers’ past behaviours.

One example of successful personalisation mentioned in the posts announcing the initiative is The Guardian’s offer to ensure its readers see no news about the birth of George Alexander Louis Windsor. That’s a service many will doubtless enjoy. Whether such personalisation can result in readers choosing only to encounter lines of inquiry and opinions they already agree with, and therefore deciding to consume media that re-enforces their feelings rather than offering broader perspectives, is a wider debate for another day. Or the comments.

Acer M5 Series Notebook Line Strengthens newest

Acer back strengthening M4 Series flagship notebook line by presenting models M5-583P-6428 new to the market. Based on the use of the latest advanced technology, the latest Acer laptops visited the market with a number of its best features like Display Technology (WiDi) for wireless streaming to HDTVs, HDMI output, and much more. And even for the sake of optimizing the performance of voice over Dihadirkannya, powerful sound system that involves Dolby Home Theater v4 audio, four 2-watt speakers on the front side and the technology package Purified Acer reportedly also included in it.

Besides equipped by a 10-point capacitive touch screen measuring 15.6-inch multitouch which supports a resolution of 1366 x 768 pixels, Acer M5-583P-6428 is also fully supported by the Intel Core i5 processor reliability in collaboration with a capacity of up to 8GB of DDR3 RAM plus 500GB hard drive .

Support Acer Instant Connect technology makes the process of access to the internet connection to four times faster than normal, while the Intel Smart Connect feature will make the connection to access applications / online services / social networking sites such as Facebook, Outlook and others continuously refreshed during internet network is still connected, and can also serve to determine whether the PC is in sleep mode or not.

Not only that, the use of battery 4-cell Lithium Polymer 3560mAh accompanied PowerSmart feature also makes the device capable of operating up to 6.5?? Hours duration on the condition of the battery is fully charged. It is said to last up to 4 years into the future without losing any potency and decreased performance.

In the U.S. market alone, the latest Series M5 notebook Acer is reportedly now been introduced to the market with a price tag starting around $ 699.99 or the equivalent of 6.97 million dollars per unit.

Adobe’s Kuler beta site resurrects photo-color picker

Adobe Systems has launched a beta version to try out changes to its color-picker Kuler service, including the restoration of an earlier feature to extract dominant colors from photos.

Kuler lets people assemble quintets of colors into a color scheme that’s saved into their own archive; people can browse others’ schemes as well. The colors can be imported into Adobe’s Illustrator software, too.

The photo tool is available by loading the new Kuler beta site. Adobe said Monday it’s seeking feedback on the changes, which it may or may not keep. Adobe also provided an option to use a less obtrusive color wheel and to shrink borders around colors so designers can better judge how they look together.

Kuler is useful, though hardly a heavyweight app like Photoshop or After Effects. But it’s interesting to watch since it’s got new-era online, collaborative, and social aspects that seem to be a priority for Adobe as it tries to convince skeptics that its $50-per-month Creative Cloud subscription is more than just a new way to pay for the old Creative Suitesoftware.

When Adobe cut over to its Creative Cloud subscription program, it introduced an iOS app that also can pick a color scheme from a photo.

Adobe once had a Kuler app for Android, but scrapped it and is channeling its resources toward the Kuler Web interface at present.

In response to a request for a Kuler Android app, an Adobe staff member had this to say:

While the iOS app and the discontinued Android app do have similar capabilities, they are actually quite a bit different. We have found that people use tablets and mobile phones very differently. So, we created the iPhone app with a different focus in mind — which translated to different features, UI, and interactions.

We have also found the tasks most people wanted to accomplish with Kuler, on a tablet device, are very similar to the tasks people undertake with the Kuler website. So, we’ve invested a lot of time and effort into updating the site to embrace the latest Web standards (also announced at MAX). And, it should work really well on Android and iOS tablets. We look forward to getting these updates in the hands of users to hear what they think.

We understand there are many Android phone users who may find an app like the Kuler iPhone app useful, and we’ll monitor demand for that over time.

In my tests on a Nexus 7 tablet, I was able to use the normal Kuler site, but the photo upload and color-wheel shrinking features had some problems. I could use photos I took on the spot and from the photo gallery, but imports from Google+ galleries, Dropbox, and Google Drive failed. Worse, the color wheel for picking colors by hand didn’t work with my touch screen.

Almost Maximum Bandwidth, APJII Install Router Brocade

Internet users in Indonesia continues to increase. As of the end of 2012, Indonesia, which has a population of 237.5 million people has 63 million Internet users.

When compared to the condition two years ago, seen a significant surge in Internet traffic in IIX (Indonesia Internet eXchange). March 2013, the average traffic reached 10 Gigabit per second, or 4x the condition in 2010.

“As a result, our routing infrastructure that already exists is approaching maximum capacity, while Internet traffic growth shows no signs of slowing down,” said Private Harijanto (Chairman IIX).

“The main problem is about 60 percent of Indonesia’s population using mobile phones, but are accessing the Internet from the handset is still fairly small,” said Harijanto. “Obviously, this trend will change quickly. 3G infrastructure development nationwide 4G/LTE technology is almost completed and will be implemented next year. ”

Anticipating the explosion of bandwidth requirements up to 10x in the next five years, the Association of Indonesian Internet Service Providers (APJII) is now using the series routers Brocade MLXe-16 is able to support 100 Gigabit Ethernet (GbE) as the main component IIX. IIX two main router was installed at different locations to ensure high availability. With the substantial spare capacity in the 16-slot chassis, APJII has ample scope to install modules with a capacity of four-port 40 GbE and two-port module with a capacity of 100 GbE in the future.

APJII also plans to apply the technology Brocade Multi-Chassis Trunking (MCT). This technology will connect the two routers on top to create a single tool that is able to generalize the traffic load on network-network service provider that has a lot of connections to the center of the Indonesian Internet Exchange.

APJII currently has 278 members, including telecommunications companies, Internet service providers and content providers. Some 161 of which have been connected to the IIX via IPv4, while 51 of them also use IPv6 connection.

Acnodes’ New 21.5” Ultra Slim Fanless Multi-Touch Panel PC Features 1080P Full HD Resolutions

Acnodes Corporation is proud to release its new fanless touch panel PC, FPC8759. Powered by high performance Atom D2550 Dual-Core 1.86GHz processor and NM10 chipset with two DDR3 SO-DIMM sockets for up to 4GB system memory, FPC8759 ensures adequate performance for end-users while consumes small amounts of power. It’s equipped with a 21.5 inch widescreen projected capacitive multi-touch screen with 1080P Full HD resolutions, ideal for interactive kiosk and control panel for machine in a variety of commercial and industrial applications. Rich I/O ports including dual Ethernet, four serial ports, four USB ports, mini PCI-E connector to support wireless networking modules, VGA port and audio (Mic-in, Line-out) port, provide excellent peripheral connectivity. It supports standard operating systems such as Windows 7, Window XP, Window XP Embedded, and Linux.

Ultra Slim design, with 48 mm thick console, PC features aluminum die-casting chassis and front panel that tested to IP65 water and dust resistant standard. While FPC8759 has an elegant and modern appearance, it is also capable of operating in environments with temperatures ranging from 32°F to 95°F (0°C to +35°C) and relative humidity of 20% to 85%. FPC8759 supports both VESA and panel mounting enables easy installation in various applications with confined spaces. To fulfill different application needs and to secure the system from power input change, the system accepts an 8V to 36V wide range DC power input.

Our product line configurations are illustrated on our web site at Acnodes.com. However, most of the commercial and industrial computers are custom built to customer’s exact requirements. Contact us via e-mail: info(at)acnodes(dot)com or telephone (1-909-597-7588) for more information.

About Acnodes
Acnodes manufactures, designs, and markets industrial computers and display solutions for diverse industries ranging from automation to military. We have an array of technological innovations in the area of rack mount servers, embedded computers, Panel PC’s and rugged monitors that create simpler and more valuable products to the customers. We work closely with our clients to customize computer products to meet their required projects and challenges. Acnodes strives to explore new technologies to better improve life and work.