Updating Angular 2 + ASP.NET Core Web Template for Visual Studio 2017 RTM

I am currently starting a new project for ASP.NET Core 1.1 when I suddenly realized that there’s a template that I can probably use for this.  Unfortunately though, the VS extension isn’t updated yet for Visual Studio 2017.

blog-01-vs2015

If you try to install this with only VS 2017 installed in your machine, you won’t be able to and you’ll be faced with this error –

blog-02-install-error

Fortunately, not all is lost yet. You can still install this template on your machine by doing the following:
Continue reading “Updating Angular 2 + ASP.NET Core Web Template for Visual Studio 2017 RTM”

Extend your ASP.NET SignalR web app functionality with Project Westminster (with examples!)

projwest

Project Westminster is one of the Universal Windows Platform (UWP) Bridges from which we can extend functionalities of our existing web applications using UWP runtime frameworks (toast notifications and responding to certain actions, camera API, contact sharing at the very least). In a nutshell, your web application published to the Windows Store with defined remote URL list that has access to the UWP APIs, and there you have your hosted app! Once published as a hosted web application (HWA), there’s no need to re-publish the app to Windows Store. Changes to your web application is pretty much your usual development workflow as most content delivered from HWA are coming from your app.

Continue reading “Extend your ASP.NET SignalR web app functionality with Project Westminster (with examples!)”

The year that was (and the itch to write again)

It’s been more than a year since I had time to write in my blog and that one has a bad tone to it. For the past year, it’s not that I have totally given up on writing, but events led after that offloading scenario with Delta proved to be challenging up to the second quarter of the year that led me to a hiatus.

 

Ideas to write never waned. In fact, most people that I have been with (work, friends, relatives, gym mates, random discussions) would say that I am sort of Mr.-I-have-sort-of-opinion-to-almost-anything-under-the-sun and the train of thoughts never seem to run out. While I kept myself active in different ways (like doing speaking engagements, and all), the randomness of things makes it difficult to write a coherent post for discussion. When things seem to be going back after the turmoil – the biggest event of my life came in when I got word that my petition to work in the US have been granted after so many delays. This further pushed writing to the backlog as I had to go through the things that has to be done as part of the process of moving out.

 

While working in the US isn’t really a new thing for me, I thought planned things would work out and eventually will allow me to go back writing, but  it turned out differently. Trying to go back to writing was overwhelmed with adjustments and things about relocation and starting over again. Random instances when I get to write usually end up with poems, haiku, and “hugot” lines written in pieces of paper, pages in notebooks, and some saved in my phone.  These became my outlet of bursting out unspoken feelings and emotions with the changes that came. For the most part since I have arrived in the US, aside from answering e-mails and calls for projects, my routine involves revisiting the things that I have done before, putting them in a narrative that would frame well my skills and capabilities, highlighting contents of my resume and how these would fit in the requirements of the consultant position companies look for. I would say that this thing is quite easy to tell as I have worked really on these projects plus the fact that I have been doing public speaking before talking about technology and all. (The whole process of being a consultant here in the US warrants a separate post, and would be part of the discussion of the personal project I am working on).

 

 

As things move down slowly towards the end of the year (Thanksgiving and the Christmas season) and me adapting more to my new environment, I had a chance to revisit things that I have been doing before and the joy of writing came up again. Writing at times enable me to speak out my mind when there’s no one else is listening, and allows to have snapshots of the thoughts which can be said as photographs of what’s running in our heads. Likewise, aside from writing, I had a chance to rekindle my passion for photography. The environment I am staying is conducive for me to go places and take photos of their wonder.

 

Moving forward to 2017, it would be a personal goal to reestablish the blog, more of an avenue to express my thoughts, things that I work on and the photos that I love to take. It might take a while to set-up things but taking off (again) from this address would be a start of a new journey for me.  As I close this entry, I wish everyone  a prosperous New Year ahead! Nothing beats the excitement of starting again with the promise of new opportunities and making things better as before!

 

 

So Unfortunate, Delta

Every time I fly to the United States on personal account, I always take Delta Airlines. I may not be a frequent flyer that flies several times a year but rather Delta is my first option whenever I fly to the United States because of mileage program (having started with Northwest/WorldPerks) and the ease of flying domestic US coming from the Philippines. The last incident was however unfortunate making me reconsider flying Delta and how they treated me on my return flight to Manila last 29 November 2015.

 

I have a scheduled trip SFO -> LAX -> NRT -> MNL last 29 November 2015. A day before that, I checked in using the iPhone Fly Delta app and saw that I am allowed to check-in up to 7 luggage for free. Ironic as it may seem, it is clear that it’s a standard deviation from the usual allowed check-in luggage of 2 for coach passengers. At first I thought that it may be a “reward” for flying Delta for the past several years. Checking if it indeed true, I selected 7 check-in items even if I don’t plan of maximizing them, and the system allowed me to. In fact, the boarding pass generated indicated that I have 7 bags with me. At this point, I didn’t receive any prior notification nor e-mail from Delta indicating that I am traveling in a period where there is an embargo. I proceed packing my stuff and finalized them – packed them off and ready to go home, and go back to work.

 

delta-01

 

 

My flight to LAX was scheduled at 0700H. I was at the airport around 0620H – just right that the gates are open for passengers to drop-off their luggage. Upon reaching the check-in counter and presenting my boarding pass and passport, they said that I cannot check-in more than 2 luggage. I asked them why are they not honoring the number of luggage indicated in the app. They said that there is an embargo imposed to the Philippines where one cannot check-in more than 2 luggage. I asked them, I didn’t receive any notification from Delta informing me of such restriction, much more that the app allowed me to check-in more than 2 luggage. I had to kept asking them since they offered app-based check-in plus the number of luggage that I will be bringing and yet refuse to honor it upon check-in. I asked them if they imply that their iPhone app that shows how many luggage I can bring for free is a bug but they didn’t answer it categorically.

 

After missing the 0700H flight, the check-in guy moved me to the 0800H to LAX which is just right for me to catch up the connecting flight to NRT with enough time to transfer my check-ins. I think by this time, they had to call the supervisor to discuss my predicament. When she came, I repeated my predicament and she answered back by saying that there’s an embargo to the Philippines that the government has “imposed”. The airline cannot do something about it. Then I asked her why did Delta, through the app, allowed me to check-in more than what is allowed if there’s indeed a restriction. In fact, I told her what I have earlier stated that I didn’t receive notifications of flight restrictions much more that their own app allowed me to select more than 2 checked baggage. She said something like this which I found to be a bit insensitive – “changes in checked-baggage provisions such as embargoes isn’t notified to passengers because it is a minor one”. How can be changes in checked-baggage provisions be a minor one considering that IT DIRECTLY AFFECTS THE PASSENGER especially during holiday season when passengers tend to buy gifts to bring home? She in a way smirked and said “sir, we’ve been going on circles” and I answered her because Delta isn’t honoring what the passenger has selected and in a way putting me in a helpless position now that I stand in front of them in the check-in counter. They may want to check the CCTV at the Delta counter last 29 November 2015 at the Domestic departure near Gate 09.

 

delta-02
She offered me options on which isn’t workable at that time, considering that I have limited to work on to catch up my flight:

  1. Ask a relative to ship the box using a cargo forwarder. I specifically told them that my relative who dropped me off is driving back to Sacramento and is she telling me to call my relative and risking being caught by highway patrol for using phone while driving? She offered no answer.
  2. Another is to ship the extra luggage via cargo. She said that it is a separate department somewhere within SFO. I asked her if I have to pay because I am counting on the accuracy of the app where it allowed me to bring more than 2 luggage. She said yes, and I countered back to her that if she is making me at fault for believing what the Delta app offered me during check-in? We had a bit of raised voices because no one wants to fold and each has a point to raise. She said that they can’t override the system because they can’t.
  3. Call the reservations hotline and ask if they can make an exception to my case. I did call the reservations and tell the whole story again and said that there’s no embargo indicated in her records. However, she also said that her copy might not be updated and the check-in counter may have an updated one. She also mentioned that there’s no way for her to “command” instructions to the check-in counter as they belong to different departments. The hotline person asked if she can talk to the supervisor but they weren’t able to talk to because the call was placed on hold for the longest time. The call was transferred to another guy just to document but offered no resolution to my point.

 

Since it took a long time to discuss matters, I also missed the 0800H and I won’t be able to go home that day. That also mean that I won’t be able to report to work by December 1, Philippine time, missing my responsibilities waiting for that day. I just told them to rebook me for the next day, with the same flights even if that means that I risk losing my job for not being present on the day that I am expected to show up. My relative returned and picked me up from SFO – had to repack my stuff and readied myself to fly again the next day with only 2 checked luggage.

 

The following day, I didn’t do online check-in, but rather did it in the airport. This time, I took a video of the check-in process and and again I was offered to check-in more than 2 luggage with the same number as it was the previous day – 7 pieces checked for free. Yes, I was able to fly and upon arrival in Japan, I received a message from a colleague that the president has announced that they decided to have me forced resign from the company for not being in the office by December 1. I kept that thought hanging since pending receiving actual word from either HR or from the president himself, it might be still uncertain.

 

 

Upon arriving in the Philippines, clearing immigration and picking up my checked luggage, I was enraged to see someone who had more than 2 checked luggage picked up from Bay #1 in Manila. I might be wrong but I checked the name and it belonged to the same person. I even had to talk to a ground crew of Delta and asked why was that being allowed to have considering that SFO staff said that there’s an embargo and more than 2 luggage isn’t allowed. The ground crew offered an explanation that the passenger may belong to a tier in the Skymiles program which is a plausible one.

The following day, I reported back to work and confirmed the result – I am removed from work, for not being in the office by December 1, Manila time.

I am still thirsty for answers to some perplexing questions that’s related to this issue:

  1. Who actually imposes baggage embargo – airline or country? I find it disturbing when the SFO supervisor said that the embargo is imposed by the country. I saw a link online – https://www.directly.com/p/delta-airlines-exactly-what-is-the-flight-embargo-41521 states information about embargo. It has been more than 2 years when that question was asked, and yet the embargo information or restriction hasn’t been transparent to the passengers then till now.
  2. How far does the airline’s responsibility go on notifying travel-related changes that affect passenger’s schedule? I find it irresponsible that the supervisor would just say that the embargo is a minor issue considering that the passenger didn’t receive notifications on the said restrictions and the app allowed him to check-in more than the standard. No accountability even for presenting false information to the customer?

 

Glad that Skymiles aren’t expiring. If only ANA-United was a good alternative, I would have taken it. Oh well.

I Have Moved!

image

It’s been a long time since I last blogged and I decided to resume it on my self-hosted domain –  patrickoliveros.com.

I think I would be able to express better my thoughts on things about the Web,  life,  travels,  and photography on a platform that gives me flexibility.

As part of the revamp, I decided to drop the name BuLOnG for another one that better reflects my personal perspective – #theboywhotravels. I am still fixing some items on the new location but I will try to be more active on that one.

To all the readers and those who have participated in this blog, thanks for being a part. A chapter has closed and a better one has opened on patrickoliveros.com.

Cheers!

ASP.NET SignalR – Beyond the Chat Application

Last January 30, I talked about ASP.NET SignalR 2.0 and what are the other uses of the technology aside from the chat application that’s widely available in the internet.

The first time I talked about SignalR (Q2 2013) is about the overview of the technology, and how it is used based on the chat application. From that point, I haven’t seen any implementation yet on how can it be used in business applications – a world where I actually work in. Although a quick check now on the project’s SignalR GitHub page, there are some projects/applications published using this technology.

Fortunately, an unfortunate incident that was reported before by a friend was a good business case where this technology can be implemented. The scenario is something like this:

Employee was working on an application where the users are located on multiple locations and multiple timezones. Employee worked with the business partner to schedule the production release of the approved enhancements. Business sent out prior notifications to the departments through e-mail and employee worked on the technical team that will assist in the release. Departments are responsible for cascading this information to their respective units as they are more aware of the specific roles for their group.

The release was made but had to be pulled out minutes after due to business reasons. The time in between the post release and the time it had to be reverted, data corruption happened and these needs to be corrected. It took a long time and large effort to reach out to different users to remediate data fixes.

A root cause analysis was conducted and one of the suggestions is that in the future releases, introduce the app_offline.htm file in the root folder of the application to make sure that no one is actually working on the application on the time of the release.

While the app_offline.htm file effectively excludes everyone from the application (aka “soft offline”), this might be costly for some who are currently working on the application. Either they had to re-upload a large file, re-input lots of data once an abrupt “activation” of the app_offline.htm file is put into place. It would be nice if these people would be notified of the upcoming outage ONLY if there’s a way to identify their current site activity and send them notices as warning to save their changes.

Building up a prototype using SignalR might be useful for these reasons:

  • Current users of the application are considered as “clients” connected to the server. Application administrators don’t need access to the web server just to get the number of users online (through perfmon) OR use an application level variable (and using that nasty Application.Lock() method) that can probably cause performance penalties.
  • I can treat the whole application as a glorified “chat session” and send broadcast messages to all or specific users (more on the sample application). I can send notifications individually or to everyone, as I desire through divs triggered according to events.

In my talk, I used two pages to demonstrate SignalR. It all started with converting a SignalR 1.x application to version SignalR 2.0.x and build the demo from that.

Client Page (signalr-Notification.aspx)

The client page provides three different ways of participating in the application session (or “chat”) – using the current windows identity, a client-input name, or a value taken from the web.config.

Image

Once you have selected your “identity”, you would see a familiar chat window similar to the chat demo. What made this demo different is that you have three functionality that builds on top of the chat demo.

The first two buttons in this page provide notification to all connected users, while the last one just provide notification to the user calling the function. The first button sends notification based on a fixed value. This could either be a standard greeting to those joining the session or any hardcoded value (e.g. name of the application, etc) that you wish to broadcast.

The second button broadcasts value from the web.config file. As indicated in the scenario above, it would have been better if the current users using the application prior the updates be notified that the application would go offline in x number of minutes. Case for example, if the website is scheduled to go offline in a specific time, you can get the value of the offline schedule (date or datetime) from the web.config and broadcast it to the users. This button is quite flexible on what data to broadcast or notify since you have control on what data to display to the connected users.

The third button simply displays how many users are connected to the application at that point. That’s just it. You would know how many people are actually having an active session with the application. Previously on ASP.NET Membership, the basis of number of users online is based on the users’ login session. However, if I say I login and close the browser after authentication, I would still be recognized as “online”.

Admin Page (signalr-Admin.aspx)

Getting through the admin page needs you to be identified again in the system. I just basically reused the first page and added admin-related items.

In the admin page, I displayed all connected users and their corresponding connection IDs. From this point, the “admin” can send individual messages to the user or broadcast to all a message. This is similar to a Facebook notification wherein people associated or a specific person gets notified for an update or message.

Admin

The demo files can be downloaded through my Skydrive folder and is provided as is.

There are other enhancements/items that I am working on this project:

  • Ability to return back to the admin who among the users have acknowledged the notification. An event can be raised and capture the current username of the user who clicked the notification.
  • Do a comparative speed/latency test on connections coming from different browsers. Note that SignalR’s mode of transport depends on the type of browser that a user uses to work with the application.

Questions? Feel free to ask them in the comments. 🙂

Updating from Windows 8.1 to 8.1 Pro

Today marked the General Availability of Windows 8.1. While I am a MSDN subscriber, the slow connection getting the bits made it through the GA of the OS. The road to updating from Windows 8 Pro to Windows 8.1 Pro wasn’t a smooth one – at the least on my current setup. Here are the issues that I passed through:

1) My Windows 8 Pro installation sits on a virtual hard drive. Given that, I cannot “upgrade” my image with 8.1 with an ISO. While I haven’t tried updating it via the Windows Store, I prefer having an ISO lunging around. What I did is to back-up the files in my Windows 8 Pro installation to another storage and followed the VHD installation again.

It went smoothly and as far as I can remember, the installation is faster as compared to Windows 8.

2) During the post-install process, I accidentally keyed-in a Windows 8.1 product key (other SKUs being 8.1 Pro and Enterprise but the image of the non-Pro and Pro is just the same). I didn’t realize it until I installed Visual Studio 2013 and an error was reported that I cannot add myself to the Hyper-V Administrator’s group. I launched the MMC snap-in and tried adding the Local Users and Groups section – it said though that the version of Windows 8.1 doesn’t allow me to do it. I checked the product key that I got hours earlier and indeed it is the base SKU product key that I keyed-in. I tried changing the product key clicking this area:

Unfortunately, despite best efforts to click on it – it doesn’t help. Then I scrolled around, looked for forum posts and never I did realize that the answer to my question is in the same screen as above.


That prompted me to a 2 step process of providing the pro product key. After 1 restart and voila,  I am updated to the pro version! Much more I like it and the fact that I can now boot directly to the desktop is a wow!

We sometimes overlook things, it happens. 🙂