How I Found A Job With Node + Angular, Part 4: Strap The Boot

In the previous posts we learned some Node.JS (and express) basics, incorporated CouchDB as our database and used some Angular.JS code to present our list of jobs.

But the final result we got is not a pretty sight, and not very usable or friendly. Those who know me, agree that I’m not that strong in UI desigbootstrapn or implementation, so to make our application prettier and more usable, let’s use some framework for that. There are a lots of frameworks out there, but I had my eye on Bootstrap. Maybe it’s my strong mobile orientation, maybe the ease of use or maybe it’s just one of the frameworks I encountered first. In any case, I like the thinking of Bootstrap makers, I like that it is a remarkable responsive UI framework, and that it is fairly easy to us. So you can download Bootstrap from here, and lets make some changes to our application, using Bootstrap styles:

<html ng-app="geojob">
  <title>GeoJob Finder - Bootstrap GeoJob</title>
  <link rel="stylesheet" href="bootstrap-3.1.1-dist/css/bootstrap.min.css" />
  <link rel="stylesheet" href="bootstrap-3.1.1-dist/css/bootstrap-theme.min.css" />
  <link rel="stylesheet" href="css/geojob.css" />
  <section class="container"  ng-controller="JobsController">
    <div class="header"><h1>GeoJob Finder <small>Bootstrap GeoJob</small></h1></div>
    We have a total of: {{jobs.total_rows}} jobs
    <div class="list-group">
      <a href="#" class="list-group-item" ng-repeat="job in jobs.rows">{{job.key}}</a>
  <script type="text/javascript" src="js/angular.min.js"></script>
  <script type="text/javascript" src="js/geojob-app.js"></script>

Continue reading

How I Found A Job With Node + Angular, Part 3: The Angular Angle

In the first post, I explained my frustration about seeking possible close (geographically) and awesome future employers. I started my journey towards geo aware job finding application by discussing Node.JS basics. In the previous post we added some database functionality with CouchDB.jquery

Now it is time to start showing some UI, to display the jobs stored in our database. There are many modern UI/Web frameworks that can do the job. My favorites are jQuery (mainly because of jQuery mobile anjquery-mobiled me being mobile oriented) and Angular.JS. I’ve chosen Angular for this tutorial. Download and install the Angular files. I would also recommend the excelleAngularJS-largent Angular free tutorial to get you started with basic Angular concepts.

Continue reading

How I Found A Job With Node + Angular, Part 2: Let’s Level Some Jobs

In the previous post, I explained my frustration about seeking possible close (geographically) and awesome future employers. I started my journey towards geo aware job finding application by discussing Node.JS basics.

In this post, I would like to serve some companies that offer positions in my field, from the node web server we just created. This means, we need to retrieve them from somewhere. Aha! A database? Well, this could be anything from hard coded JS array, a file and of course – a database. Following this short presentation about using LevelDB with Node.JS I decided to use LevelDB for this tutorial. This turned to be a bad decision. While my tests on Amazon EC2 cluster went very well, installing level on a Windows machine became a sisyphic task. Simply trying

> npm install level

Will fail. Looking at the logs you can see some rants about leveldown failed installation. LevelDB is composed from 2 main packages: levelup – which provide a high level API to the DB, and leveldown which provide the low level hard core DB functions. Trying to follow the instructions on Richard’s blog by installing only levelup:

> npm install levelup

will give a wrong first impression. While the installation goes by ok, the DB will fail on first try:

&gt; var level = require('levelup');
&gt; var db = level('./DatabaseDirectory');
LevelUPError: Could not locate LevelDOWN, try <code>npm install leveldown</code>
    at getLevelDOWN (c:\Dev\node\geojob\node_modules\levelup\lib\util.js:109:11)
    at (c:\Dev\node\geojob\node_modules\levelup\lib\levelup.js:109:37)
    at new LevelUP (c:\Dev\node\geojob\node_modules\levelup\lib\levelup.js:82:8)
    at LevelUP (c:\Dev\node\geojob\node_modules\levelup\lib\levelup.js:44:12)
    at repl:1:10
    at REPLServer.self.eval (repl.js:110:21)
    at repl.js:249:20
    at REPLServer.self.eval (repl.js:122:7)
    at Interface.&lt;anonymous&gt; (repl.js:239:12)
    at Interface.emit (events.js:95:17)

Again, because of our friend leveldown. Trying to install leveldown directly will fail as well.
Continue reading

How I Found A Job With Node + Angular, Part 1: Let’s Do Some Node

After 4 years in AT&T as mobile R&D group manager and system architect (working on AT&T Connect and Unified Communications products) I was leaving and looking for a new position. If you ever looked for an appealing position in the past, you must have connectnoticed a disturbing fact: some of the more attractive positions are offered far far away (geographically speaking) from where you live. At this time in my life I was not willing to move out for a new job (the family really likes our humble neighborhood and community) nor commute to death (in here that meant no more than 1 hour travel for each direction). So my career council shared with me a web site that offered all the relevant companies in my field, with a geographical distribution information, to help me choose the “right” company for me. While this web site was a helping factor in my job search, it was annoying me for its old user interface design, and poor usability. And since I had some free time now, I decided (you know me – if there is something I love it is to learn some new stuff, and fix some broken things) to try to make a better tool for my fellow job seekers. Continue reading

Don’t Trust PGGM Pension Fund

The media is filled with recent days reports about how PGGM of the Netherlands, one of the world’s larger pension asset managers, says it is divesting from five Israeli banks it says are involved in financing construction of Jewish settlements in occupied territories.

You can read it all over here, here and here, or Google it.

Source: PGGM Holdings Q1 2013, from their web site

Source: PGGM Holdings Q1 2013, from their web site

Unfortunately, PGGM are involved here in one of the biggest lies in the Dutch pension industry, and are only seeking fame in this publicity stunt. If you look at their holdings on Q1 2013 – You will not find there a single Israeli bank as part of their portfolio. That’s right! They never invested in Israeli banks.

I suggest for all Dutch clients that manage their pensions in this company: leave them. Leave them, today. They will also lie to you! Be warned and flee to an honest pension fund, if you don’t want to help them promote their lies around the world.

Efficient Android Code – A Case Study

Just the other day I cam across UC Android’s MSRP parser implementation. I was astonished, left speechless. Gazing paralyzed at the code I resisted the urge to run screaming to the development manager and demand that the author of this gem will be publically hanged on the next weekly happy hour. Instead, being the good soul that i am, I decided to take this code as a test case to demonstrate how can we increase Android code efficiency.

I will try to demonstrate:

  1. Can we increase this code efficiency? Maintainability? Performance?
  2. Is it worth making the effort?

Continue reading

EMOZE Sets a New Standard for Email Experience on Android

Herzeliya, Israel, 7 January 2013: EMOZE Ltd., a leading provider of transparent, synchronized mobile push messaging and push content solutions for handset manufactures, mobile operators and enterprises, today released its latest feature rich version of an advanced Secure Push Mail for Android devices. The new version includes an improved overall application performance and a smoother user-friendly interface.

The EMOZE Secure Push Mail is designed to turn real-time messaging into a simple, intuitive and productive function. Improved application performance now includes the ability to select multiple folders to be pushed to the mobile device as well as the ability to archive and restore emails locally. The new version features “Out of Office” Automatic Reply as well as Meeting Response support for MS-Exchange and Google accounts. It also helps reduce the cost of data while roaming by controlling the synchronization options.

Managing several email accounts has never been easier with EMOZE Secure Push Mail. Emails can be synchronized seamlessly with the EMOZE application, including integration with contacts, calendars and even folder structures. With EMOZE’s Secure Push Mail, users may now enjoy the ability to manage emails, folders and much more “on-the-go” without depending on their computer.
EMOZE offers a variety of advanced security options to protect user’s information, privacy and identity, especially in cases where one of the popular cloud-based office services – such as Office365, or Google Apps – is in use. In fact, the EMOZE solution allows users to remotely locate, lock, or even erase ?the data of a lost or stolen device. It is as simple as sending a text or email message.

Main Application Features:

• ?Push Mail: Real-time email notification, including POP3 accounts;?
• ?Supports contact and calendar (PIM) synchronization;
• ?Multiple Email accounts: Easy configuration of several email accounts;
• ?Robust compression for both text and file attachments;
• ?Preview Attachment Function: saving time, data and battery consumption;
• ?Forward attachments without having to first download or open the files;
• ?Global Address List (GAL) access;
• ?Out Of Office assistant support (for MS-Exchange 2007 and higher);
• Accept, Decline, and Tentative response to Meeting Requests (MS-Exchange and Google ?accounts;
• ?Ability to select multiple Folders to Push: enables selection of one or more folders ?that will ?automatically be pushed to the mobile device whenever a new mail is sent to that ?folder;?
• ?Archive and restore email right on the mobile device with the new Archive folder;
• ?New Traffic Saving Counter: measures the mobile data used by ?EMOZE in order to help better control data consumption;?
• ?Remote Wipe by email or SMS: ability to erase all private information on a lost or stolen device, returning the device to its ?factory settings;
• ?Storage card encryption: encrypts the attachments downloaded to the SD card ?or mobile phone;
• SIM card replacement alert?;
• ?Remote Phone lock: ability to remotely lock/wipe the mobile phone; ?
• ?Find Device Location: allows receipt of an email or SMS with a Google maps link to the device ?location.
• ?Device Alarm triggers high volume beeping alarm on the device;

The EMOZE Secure Push Mail application is currently available for download on Google Play in the Communication category.

Mi-Fone Launches Smart Feature Phones Embedded With EMOZE Push Mail and Messaging Technology

CAPE TOWN, South Africa, PORT LOUIS, Mauritius and LONDON, November 12, 2012

AFRICACOM 2012 – Mi-Fone and EMOZE Ltd. today announce the launch of a new range of smart feature phone devices embedded with EMOZE’s push mail and messaging technology. These next generation phones provide a more user-friendly email and instant messaging experience.

With EMOZE pre-embedded in the devices, users will be able to easily and securely access both enterprise and personal email accounts, synchronise their email contacts and calendar, view office attachments, send voice messages via email, and even real-time chat via pin messaging with their friends.

EMOZE is fixed in the operating system of the device and does not require any middleware or runtime environment to load, but rather it starts when the phone is powered on. In addition, EMOZE is suitable on any IP-based network, and does not require any SMS integration.

Mi-Fone is committed to enhancing its mobile phones to ensure its customers receive value for money. “Through our partnership with EMOZE, we can now add the important elements of Instant Messaging and Push Mail in order to give our consumers the ultimate mass market consumer user experience. With these features our target sector become more productive and in turn become better citizens. We call it, Aspiration Within Reach.” says Alpesh Patel, Founder and CEO of Mi-Fone.

Moshe Levy, CEO of EMOZE Ltd, comments: “We look forward to our partnership with Mi-Fone, the leading local brand in the African region, as we share similar values of excellence and commitment to user satisfaction. EMOZE’s unique patented push messaging technology provides an effective solution that is both lean on data usage as well as battery consumption.”

WorldMate Introduces a Major Upgrade to its Hotel Booking Experience on iPhone


SAN FRANCISCO, July 9, 2012 – The world’s largest mobile itinerary management and travel booking app, WorldMate, today announced its completely re-designed hotel booking service on the WorldMate for iPhone app. The enhancements are a direct result of WorldMate’s exhaustive study of the booking behavior of millions of its customers.

Continue reading