Friday, August 18, 2017

Page navigation in Single Page Applications! using AngularJS

Actually there are no 'Pages' in a Single Page Application (SAP) but no problem. If you are familiar with anchor tags in HTML, you could follow it with the help of the SRC's in your script that will help updating the page dynamically calling up the routing in AngularJS.

These are two important script references that you should add to your SPA:

This is an important module that makes routing possible:

ngRoute module provides the routing and deep linking services and directives for a Angular JS applications.

You should read the documentation which gets clearer when you do an example.

Here is an example of a SPA hosted on my localhost (the file below is placed in the wwwroot directory of  C:\inetpub

<!DOCTYPE html>
<script src=""></script>
<script src=""></script>

<body ng-app="HtekApp">
<p><a href="#/!">Welcome to Hodentek</a></p>

<a href="#!SSIS">SSIS </a>
<a href="#!SSRS">SSRS</a>
<a href="#!Azure">Azure SQL</a>

<div ng-view></div>

var app = angular.module("HtekApp", ["ngRoute"]);
app.config(function($routeProvider) {
    .when("/", {
        template : "Click on the link to see the contents"
    .when("/SSIS", {
        template : "<h1>SQL Server Integration Serivces 2005"
    .when("/SSRS", {
        template: "<h1>SQL Server Reporting Services</h1><h2>SSRS 2008: ISBN: </h2><h2>SSRS 2012: ISBN</h2>"
    .when("/Azure", {
        template: "<h1>Microsoft SQL Azure Enterprise Application Development</h1>"


Monday, August 14, 2017

svg in HTML5

SVG is variously described as  'part of HTML5 specification' or an HTML5 extension. In either case, I am very happy as I am a fan of SVG.

In HTML documents you could embed an in-line SVG code.
SVG in some cases appear superior to Canvas in HTML. SVG creates prefabricated graphics that is part of the documnet model which can be accessed by the ID for any event based action, where as the graphics for use in CANVAS needs to be created and rendered during page loading.

Read my SVG related posts here:

Monday, July 17, 2017

Single Page (web) Applications are trending

It is exactly what it says. Single Page Applications (SPAs) are web applications with a single web page that uses AJAX for its dynamic interactions. As page refresh is on the client side the SPAs can have downside of performance degradation if they are not properly designed and SEO optimized.

There are many JavaScript frameworks to write SPAs. There are lots of JavaScript frameworks that you can use to build SPAs. Lots of them are Open Source. Here are some:


I hear a lot about Angular and Aurelia, perhaps more people are using them.
Intel XDK had both Angular and Backbone templates, but they are not supporting them anymore.

AngularJS is in Version 2.

I have a large number of posts on Intel XDK here.

Friday, June 30, 2017

Comprehensions in JavaScript

Comprehension(s) list(array) is used in many computer languages. What it does is it takes an array and modifies it  to create a new list(array) based on some modifier.

For example if you have a list like this: [ 1,2,3 ],
you can create a new list with each element of list replaced by itself multiplied 3 times like in Example 1

In the second example from Mozilla site, you take an array of lower case letters and use the Javascript string operatory 'toUpper()' to generate a new array with letters of each element capitalized.

Read here:

These were tested to work in Mozilla Firefox (I believe it is version 54). However it does not work in Microsoft Edge. I believe these are still being tested for future version of ECMA script according to the Mozilla Developer site.

Monday, June 26, 2017

Apache CORDOVA is the place to go if you were using Intel XDK

I was following Intel XDK for more than a year  with many posts on my blog for mobile devices and participating in Intel's forums.  I have observed that its emphasis was slowly changing and I started looking for alternatives. There are programs for which you need to pay, which I am not ready, as I do not derive any revenue from what I do. I am looking for free programs.

Progressively Intel XDK has been shifting their focus to mostly Intel IoT devices. The App Designer support does not exist anymore except for a few features in the interface. The Interface as you knew it is now mostly geared for IoT devices. Intel XDK forum suggests that there are more tools freely available (on the Internet) that may do equally well and a strong recommendation for using Cordova CLI.

Well one cannot expect a tool to live eternally and things do change. What is needed on the part of developers\users is to turn somewhat nomadic and look for new pastures.

Here is a link to Apache CORDOVA site where you need to forage next. Of course, Apache CORDOVA will be there much longer than Intel XDK could have been. For one thing, Apache CORDOVA has a neat architecture for building web/native apps which means you need to use the plugins if you need to access sensors in the mobile device.

Here is a picture of the well-knit Apache CORDOVA architecture from their site:

Monday, June 19, 2017

AngularJS Directives that you should know

AngularJS directives are extensions of HTML markups. They can be attributes, element names, CSS class etc. AnuglarJS script reference is important and the script can be found here:"
The above script reference needs to be added to your hTML page.

You can find the whole list of directives here:

Here is the usage of some directives placed in a html page that can be displayed on your localhost (in this case the IIS in Windows 10). Place this code with a suitable name in the inetpub / wwwroot directory.


  Some directives in AngularJS

Sorry, blogger still does not support the "pre" tag!. The ng-app directive can be in the 'html' or the 'body' (shown here).
When viewed on the browser (in this case Microsoft Edge), the HTML page renders as shown.

Type anything it gets copied next to Hello
Enter the increment region with your mouse, the count (presently 1) gets incremented
Click the link and you get to the page

More to come in future posts on AngularJS

Monday, May 29, 2017

What is Cafee2Go?

You create a video and you want it the way Picasso or Monet would have visualized it. Can it be done? The answers appears to be answered by Facebook's Caffe2Go. It was easy with stills as many programs do it, but with a video it is another thing.

Caffe2Go is supposed to be third iteration of AI, the deep learning. This was possible earlier with big machines and lots of computing power, since the program has to learn the myrid images that these great artists envisioned it could not have been done otherwise. But to do it on the phone in the palm of your hand, that is something that Facebook seems to have pulled off, with the Facebook app Caffe2Go.

It is a deep learning platform on the mobile phone. The app takes the style of the artist and transforms the input video, it is basically a style transformer.

Here is a demo of this deep learning app:

Thursday, April 6, 2017

Markdown Syntax makes web page more readable, editable

HTML markup is well known and Markdown Syntax is a construct to make a web page readable.  Markdown syntax is used to make it possible to write to the web using simple text.  It is a text-to-HTML tool for web authors. No need to type those angle brackets(< and >).

Markdown syntax is very small and not extensive like that of HTML. It is not used to replace HTML but to make it easy to read/write/edit prose in a web page. Markdown does not need special editors.

Since Markdown consists of few constructs if you need beyond them you can use HTML. One of the special constraints in using Markdown is in the case of block level elements such as 'table', 'pre', 'p' etc. In this case for using Markdown just surround block-level elements with blank lines and Markdown syntax takes care of the rest.

Learn more about Markdown syntax here. While you are there click on the tab Dingus tool (written in Perl) to convert your Markdown Syntax to html syntax.

For example you can create first and second level headers by just typing them as shown here:

A First Level Header

A Second Level Header

The above Markdown text will be converted  into the HTML source by the Dingus tool: (note: Blogger does not render the 'pre' tags which are in the source of this page. That is why you are seeing the h1 and h2 tags rendered. Review my post on this browser problem.

A First Level Header

A Second Level Header

The Markdown text is readable and can be typed in with a text editor and the tool converts it to web compliant HTML.

Review the screen shot here:

tags continues to not work in Blogger

For quite sometime I have had problem displaying HTML code in my blog as the Pre tag did not render correctly. Here I am trying to see what is happening, if any, in rendering the Pre tag. I decided to show only screen shots of either the HTML tab in my blog post, or the Compose tabbed page of my blog so that the browser effects are properly seen.

When you want to create a new post in Blogger, this is the HTML code you get and the 'Compose' page is empty.

Now I enter a single line-'This is a test' in the Compose tabbed page.


The HTML markup shows this:


Now I add a 'Pre' tag as shown.


The following is the content of the 'Compose' page.

So far no problem, good.

I now go back to HTML pane. Looks OK, but it has added another repeating line at the top.


Not a big difference. I refresh the browser and everything back to as it was before refresh.
I just draw a line in 'Compose'.


The HTML after this appears as shown. It has added 'Pre' tags as shown. Why 'pre' tags why not just 'p'.


I just added a 'div' tag and I am going to place a 'Pre' tag inside the 'div' tag.


This is the 'compose' page.


I added some 'pre tag' inside the div tag

The compose  now appears as shown.

I add another div and within div I add a pre tag. In the pre tag I add special characters (HTML markup) as shown.


The Compose page after the above appears as shown.


The pre tag did not work as intended for html tags.
I revert to the HTML to see if the blogger's processor has added any thing by itself. It does some time. No change.

I add a dotted line in HTML code.


There is an expected change as shown.


I revert to HTML and I see it has changed.

This time it accommodated the dotted line inside the 'div'. I modify the page with 'code' tags as shown. Some recommendation from some of the Internet sites is to enclose it in 'code'


The 'Compose' page now appear as shown.
The extra > in the last line appears to be an error while typing.

It is getting worse!

I refresh the page and nothing is changed in 'Compose'.

I host the html page on the local IIS Server and the response is as shown.


The conclusion is  'Pre' tag is not working in the Blogger as it is supposed to.

Publishing Mobile Reports using SQL Server Mobile Report Publisher

SQL Server Mobile Report Publisher (SSMRP) is an authoring tool that can be used to quickly creating Reporting Services mobile reports that are optimized for mobile device with a variety of form factors. You can have an assortment of visualizations, from time, category, charts, tree maps, and custom maps.

With SSMRP you can,
  • Connect mobile reports to a range of data sources including on-premises SQL Server and Analysis Services
  • Layout reports on a design surface to accommodate flexible mobile reports
  • Save mobile reports to a Reporting Services server and interact with them in a browser or with Power BI on mobile devices(iPad, Android Phones and tablets and Windows 10 devices).
What do you need to create Reporting Services mobile reports?
You need the SQL Server Mobile Report Publisher

Version: 1.0.3923
File Name: SSRS.MobileReportPublisher.Installer.msi
Date Published: 9/22/2016
File Size: 25.3 MB

System requirements:
Supported Operating System
Windows 10 , Windows 7, Windows 8.1
.NET Framework 4.5 (or later)
Visual C++ Redistributable for Visual Studio 2012 (x86)

Download SSMRP here:

Wednesday, March 29, 2017

Apps with Mobile Roadie, the one-stop platform

MobileRoadie is the platform to build mobile apps with rich features. It is also one-stop, build, manage, design and engage. It supports all media, photos, video and audio. The text color in the picture may not show you the logo clearly!

Here are features taken from Mobile Roadie site.

Using Photos:

Upload your photos manually, or automatically pull in your photos from an RSS feed, Flickr account, Instagram account or hashtag, Mobypicture, Picasa, Twitpic, or Facebook Fan Page profile photos.
Users will see your photos in a grid layout of your choosing, and can even play a slideshow of your photos.

Embed news:

Add news posts manually, or import automatically via RSS feed, Twitter account, or Google News keywords.
Each item has artwork, title, date & time, and HTML story content.

FAN Wall:

    Import your past and upcoming events from Artistdata, Bandsintown, Songkick, Plancast, Ticketmob, SonicLiving, Eventbrite, or add them manually.
    Your users can RSVP to events, add to their calendar, see who else is going, and post photos of the event.
    Choose to display your events as Live Shows layout or Sessions/Workshops layout to best suit your content.


Add locations along with addresses, contact info, and images.
    Your users can view your locations as pins on a map, as well as in a simple list.


    We have a wide variety of sections to suit your content, and are constantly adding more.
    Some of the other sections you can add to your app are: Accounts, Attendees, Biography, Books, Category Shortcut, Copyright, Directory, Discography, Favorites, Links, Mailing List, Menus, QR Scanner, Speakers, Store, Top Users, Twitter.

How to get started building apps with MobileRoadie?

Easy. Click the button Start Now at the bottom of the site, fill up their form and wait form them to reply.

 I thought I would find more technical details. It appears I have to register and get the reply before I can see how all of this get integrated.

Now we have Samsung Galaxy S8 and S8+

They are black, they are beautiful and they have OLED screen. There is yet another voice assistant BIXBY to join the Cortana, Alex and others. The future looks like the battle of the voice assistants.
While S8 is 5.8", the S8+ is 6.2" with an aspect ratio of 18.5/9. probably the battery (3000 Ah & 3500 Ah) must have had an extra overhaul. The battery can be charged using the USB-C charging port.

It has nice resolution 2960x1440 with the display covering 83% of the face. There is no HOME button but there is a pressure sensitive area that functions as one.The cameras remain the same as in its earlier phones.

It appears that it has been designed to work with the up and coming Internet Of Things like the Connect Home feature.The OS is android.

The phones ship sometime next month.

Here are the specs (look after zooming) as seen on the SAMSUNG News Room site.

Monday, March 27, 2017

Is Microsoft Band 2 dead?

I thought it was a nice fitness device, not as flashy as Apple Watch. I was even preparing to buy one. The only place where I could by was at It is not available in Microsoft Stores.

I believe Microsoft has pulled it out of the stores. Even the developers SDK is not available anymore.

Cutting of the limbs like this can only mean one thing. Microsoft Band 2 is dead.

I have to look at other options. There seems to be too many with a staggering price range.

Well what about Samsung's band? I will look into it. It will not come cheap.

Sunday, March 26, 2017

Creating a database in SAP's Ultralite 17 - Part 2

Mobile apps without data are not very interesting especially for enterprise / business applications. Most  businesses are data-centric. Ultralite databases with their small foot print are ideal for mobile applications. As described in the previous post you can use the APIs to create apps on many different devices.

In this post I describe the steps to create a database with all the default settings using the SQL Central interface. If you are new to SQL Central (was previously called Sybase Central) you may want to read my older posts here.

Launch SQL Central from All Programs under SQL Anywhere 17.
Click Tools and choose under UltraLite to create a database as shown.


 Creating a database is driven by the Wizard which appears as soon as you click Create Database... in the above window. The following sequence of windows shows how the database is created. Although you can make many changes to the database settings, all defaults are used in this post.

You start with the welcome window. Read the notes here.

Click Next,

Use the Browse... button to find the location for the database you are going to create and provide a name. Herein the name is Mar25_2017.

Click Next. Accept the default storage settings.

 Click Next.
Next choose the Collation and character set. Herein Ultralite defaults are accepted.

 Click Next.
Accept the default creation parameters. Have a look at what they are (these are Ultralite defaults).
You can change any or all of them.

 Click Next.
You may leave this as is. Synchronization is important for synchronizing the UltraLite with the main server. For the moment you may leave this empty.

 Click Next after placing a check mark for connecting to the new database. This makes the database available in the SQL Central Management interface.

 Click Next. Oh! you get the command line way of creating this database. What the wizard delivered is the execution of the command line with the parameters (Switches) shown here. This is neat. Next time around you may just use the command line.

 Click Close. The database is created and now appears in the SQL Central under Ultralite 17 (Compare this to the very first image in this post)

Here is the Properties page for this database. Presently it has objects such as Tables, Users etc.

Saturday, March 25, 2017

Developing a mobile app using SAP's Ultralite DB - Part1

Ultralite (formerly of Sybase but now SAP) is a compact relational database management system with many features of the bigger SQL Anywhere. It is ideal for small foot print devies like smart phones, hand-held computers, tablets, etc. Ultralite using its in-built features can synchronize with a central database or with other Ultralite databases using Mobilink.

SQL Central the managment user interface can also be used with Ultralite.

Ultralite Management can be carried out using SQL Central. The various mobile devices (more common ones) connect to the database via Application Programming Interfaces (APIs).

These are the following APIs that can be utilized:

Ultralite.NET              Windows Mobile
UltraLite C/C++          Windows Mobile
UltraLite C/C++          iOS
UltraLite for WinRT   Windows Phone
UltaLiteJ                       Android

Friday, February 24, 2017

Web page static elements using R Studio

We have seen that R Studio can be used to create Web Page using the 'Shiny' package. One of the first things to do is to create web content in HTML that can be rendered n a browser.

You can use a HTML wrapper function or use the individual wrapper functions of the various tags in formatting a web page. In most of the examples you can directly copy the code and paste it into the R studio console.

Here is an example of how you may wrap with HTML:

ui <-fluidpage br="">  HTML("


server <-function br="" input="" output="">
shinyApp(ui=ui, server=server)

This is how it gets rendered.


In the following there are few more tags that are frequently used. I will try to get all of them in future posts.

Here are the tags a, h1 and br.


ui <-fluidpage b="">a
                      "Hodentek SQL Server Blog"))
server <-function br="" input="" output="">
shinyApp(ui=ui, server=server)


Here are the tags h1 through h6, em and p:

ui <-fluidpage br=""> h1("First Level"),
  h2("Second Level"),
  h3("Third Level"),
  h4("Fourth Level"),
  h5("Fifth Level"),
h6("Sixth Level"), p("some text"),em("italicized")
server <-function br="" input="" output="">shinyApp(ui=ui, server=server)

The rendered page is as shown:


Look forward more of R Studio stuff here or 

Workaround for this error in R Studio

You started your learning and some times you encounter this error in your RStudio console:

ERROR: [on_request_read] connection reset by peer
What are you going to do? 

What is described here is not a complete fix (unless you want to change your default browser)but a possible explanation of what is happening. It is most probably related to RStudio using the Microsoft Edge in Windows 10 operating system.

There are three modes that you can run to display in a viewer. This are shown in this image here:


Run in Window mode:

Run in Window opens a window ~ -Shiny as shown and runs the highlighted code to display the result.


Notice that the tab that is open is http://127.0.01:6170. Now if you change over the tab to 'Open in Browser', Microsoft Edge opens displaying the same URL. Now if you close the browser you see the error messages as shown. I am not sure why it repeats so many times.


However, if you copy the URL ( and paste it into a Firefox browser you will see 'Hello World' displayed again. But if you close this browser, no error is reported in RStudio console.

Hence in Run in Windows mode you can get away without producing error and stopping by pasting the code in Mozilla Firefox (assuming you want to see it in a browser).

Run External:

In this mode the Run result is displayed in the external browser which happens to be Microsoft Edge and you cannot avoid the error. Of course the code runs and displays the result but when you close the browser the error crops up in the console.

Run in Viewer Pane:

Viewer pane is one of the panes of RStudio. When you run the code in this mode the result will be displayed as shown.

The error crops up immediately as shown.


You need to click the Stop button to return to console prompt.

You can avoid this problem by choosing Mozilla Firefox as your default browser.


Monday, February 20, 2017

Building Web apps with R Language - Part 1

 R language is open source with a huge number of developers. It has a great arsenal of great stuff already accomplished. It is a language that you should get exposed to yourself. You just install R Gui and you are ready.

Shiny is an enterprise-grade web application framework targeted for those who want to develop with R using the familiar HTML5, CSS and JavaScript. Using R you can turn terrific analytic solutions you have developed/developing into interactive web applications.

Go to this site ( directly and learn more.


If you have R Studio you have Shiny because Shiny is a package that you can download.

In this first part we only talk about the very basics.

I assume you have read my previous hands-on R examples in my blogs.

Here I just show a very basic (aka Hello World) example of creating content for a web page using R GUI. More will come later in my blogs.

Launch R Gui as shown and provide reference to the shiny "library" as shown by typing in the three lines of code (The four lines of code in red).


When you hit Enter after the third line where you define the shiny app, a browser window will open as shown displaying the apps output as shown at a port of the local host.


You also get a response (the last line) in the R GUI as shown.

That is all there is to create a content.

The ui summarizes your user interface, the server is something like a web server and shinyApp is your web response. No fuss, very simple.