Monday, 1 December 2014

Ionic Android App - Learn by Doing

Hi reader, I am currently working on an Android app and I want to go the Ionic approach. Usually I use projects like these as a learning process for me and others. So I will be blogging my progress from the setting up the Ionic Development environment to the finish of the app. This blog will also include all the dilemmas I will get to and also share how I was feeling at any point time. So you get an in-depth exposure through my eyes during the development of this app.

Before you continue you can do cursory read here about ionic apps. (the steps provided on setting up Ionic on that page is pretty confusing and not detailed enough though)

Setting up the environment for Ionic

Setting up the development can be a pain if you don't get the right instructions to follow. The one on the official ionic framework website misled me a couple times so I am going write how I got my mine to work flawlessly. All there's this youtube video linked below that I recommend for anybody starting Ionic for the very first time on a windows PC.

If you want to complete video on how to setup the Ionic Framework follow
Setting up Ionic . Its a Youtube video in parts. Part 1 & 2 should get you started from the basics.

If Youtube is going to be a drain on your internet expense, you can continue reading this blog.

Step 1 









Monday, 15 September 2014

How the Idea of Internet Bundles can Revised to UNLIMITED


You may skip to the point I start explaining why the idea of capped internet is not advisable 

Recently, I have been looking for FAST internet access for my house and of course the first point of call is the Telecommunication Companies (MTN, Vodafon, Tigo etc) [Known as Telcos from here on wards]. Well, I entered their offices to inquire about the various deals they offer for FAST internet access for domestic use. You know how these customer relations guys/girls talk about their products; throwing the words "very", "revolutionary", "better", "new technology", "fibre optic", "special" and the like all over the place to make you think they have got the best internet technology in the world or at least Ghana. But I have my own requirements and expectations though. What am I looking for? You know the first condition, FAST. The second ... UNLIMITED. I don't understand why I pay to use the internet for 30 days and yet when I use a certain amount of data, I am cut off from the using the internet I paid for. Even more annoying is if you don't finish using the data bundle, the remaining is snatched from you!(Not all the Telcos do this by the way). Why am I not given the freedom to get as much as I want for a time frame I have paid. This idea of Bundles and time expiration actually makes you pay twice for one commodity you bought. Remember that time is money. So you pay for the time(30 days) and then you pay for the Data bundle. Let me explain further with an example. Lets say you see a list of bundles with time bounds like...

DaysData BundlePrice
1 week2GB12.00ghc
30 days3GB30.00ghc
30 days6GB45.00ghc

So looking at this table, when you purchase 2GB of Data bundle to be spent in 1 week and the bundle finishes before the week, what is left of the days is actually cost you have incurred (Time ~= Money). That means you paid more than what you think you for, being the 12.00ghc in our case. 


Now why do I think Bundles don't make Sense.
 Well, every Internet Service Provider knows the max bandwidth they can provide its users. Every ISP knows the number of customers they have. An ISP just with a little effort can get an idea how their users consume data on a daily basis. So instead of capping data usage, why not redefine your pricing. 

Pricing Redefinition
First, with the knowledge of the max bandwidth an ISP can provide a user, you estimate how much data that is going to be used say a week i.e if the user uses the internet to its full capacity (using all the bandwidth for that time period). So if for instance given a max bandwidth of 2048Kb/s for a week a user can consume a Maximum of ...

Note that  1 Byte =  8 bits ... The bandwidth is given in bits per second
So if for every second, 2048Kbits of data is consumed, then it translates to 256KBytes used every second. 
So for a week (604800 secs) you would have consumed 154828800KBytes ~ 155GBytes [Remember this is when you are using the internet 24/7 @ full Bandwidth {which is rarely the case}]

So even with these values, an ISP can give you the price of a data bundle 155GBytes but tell you its unlimited because you are MOST LIKELY (99.99999999...) not going to get there in a week. Why? Because your max Bandwidth provided will not allow that. 

But this where the ISP has to get smarter about the pricing. Of course charging a customer the worth of 155GBytes of data for a week would be outrageous. Virtually no one would sign up for that. However, there may just that one customer who would pay to have absolutely unlimited and fast internet. Well the pricing strategy doesn't end here.

Having the information about the consumption rate of your users become useful here.
-  One way is to find out about the average consumption for your sample of users chosen. With this information, you can further reduce the ceiling for the Max data usage for a specific time range from the absolute Max data usage based on bandwidth.
- Another is to find an average of the lowest data consumption and highest data consumption among your sample users and charge the worth of this average but call it unlimited and make it truly unlimited. Why?
   Even though it is true that the data worth of the unlimited deal is attainable but the users, there is also the case of some users not getting to this particular "safe" data limit you have set. So while some users would be able to get past this limit, some will under use it too and the difference between the two can offset cost incurred by the provider. So in the eyes of your customers, they are receiving unlimited data package, however in the eyes of the ISP, they are being charged the right amount and all is just fundamental management of bandwidth. I think what would make sense to sell as part of the time to use the unlimited bundle is the bandwidth since there is a relationship between the time to use the internet and the bandwidth at which you use it. In that way, you would not be paying for two disparate things just to get internet connection.

Aside: I know you might be thinking... Why don't I choose Tigo, they are unlimited ... Are They Really? Tigo advertises to be unlimited however the details of that unlimited deal is that streaming and downloading is CAPPED. Only browsing webpages is free and even that, the bandwidth is heavily reduced when your bundle for streaming and downloading is reached. At this point, you are better off assuming the data is finished and just topping up than trying to use what is left of the "unlmited" package they advertise. Apart from Tigo which makes an attempt at unlimited internet, I have not come across any Telco based ISP that offer unlimited internet.

https://www.techdirt.com/articles/20130118/17425221736/cable-industry-finally-admits-that-data-caps-have-nothing-to-do-with-congestion.shtml

Current Reasons Telcos Give for Capping internet is not convincing enough

_________________________________
On this note, let me actually put my request on board. I am searching for very FAST and UNLIMITED data bundled internet connection in Ghana, post paid/prepaid, and is affordable. If you know of any, put it in the comment below. Thanks















Monday, 18 August 2014

Programmer != Developer //What Are The Differences?

Well, you are not exactly wrong when you use these words interchangeably. I am not so sure if the dictionary has difference definitions for these two words in the context of Computer Science. However when these words are mentioned, they kind of fit a certain kind personality in the Computer Science Industry. I think it is better to be aware of these subtle differences so you know to interact / communicate better to either a Programmer or a Developer. Also you will know how to recruit better as an employer.

To start with, a programmer or a developer probably earned a computer science degree but what makes them different is what they are drawn to in the industry. What they become experts at doing is what naturally determines which category they belong. Of course, there are some overlapping tasks they can both perform as computer scientists, however certain tasks are well suited for a programmer and the same applies to a developer.

Developers
+ Developers usually have a high level thinking of solutions to problems. They are pretty much concerned about integrating one system into another, consuming an APIs etc.

+ They are mostly known to build on top of already existing Frameworks/Platform and Stacks. They are knowledgeable about which Framework of tools to pull together to get a certain product done.

+ Most of the products from Developers are service based and are more people-oriented (think in the line of Management Systems)


Native Benefits of being a Developer
+ It is fairly easy to read and understand the code written by developers because their code is structured by the Framework they are using. If another developer starts reviewing the code of a fellow developer using the same framework, there is a high possibility that the code is going to be very understandable. This is because the framework provides a structure by which task can be accomplished.

+ Another Benefit to a develop is since they make people-oriented products, they directly make technology very useful to the average human being. SQL and APIs exist but if developers are not there to make use of these, these tools are pretty much useless.
________
Developers are users of SQL, Frameworks like Cake php, Yii, Laravel etc. Consuming APIs like Google Glass API, Android API, mytxtbuddy API, VOTO API etc ...
________

Programmers
+ Programmers usually have a low level approach to solving problems. They break the problem into very tiny bits until they individual problems become like one of the many known problems of computer science. eg: Network connectivity problem, shortest path, sorting, Hamiltonian and Eulerian path problems, Dining philosophers and ton of other classic problems.

+ They are very knowledgeable about algorithms and data structures and using the appropriate algorithm and data structure is a big deal to them.

+For programmers, its not OK if the program is just running but will make sure it has a very optimal running time as the input size increases.

+Programmers tend to mathematically inclined, generating formulas and using well known mathematically proven solutions,

Native Benefits of a programmer
+ Well it is obvious programmers do the heavy lifting and all the strides that are made in the computer science industry is made possible by programmers. They create the platform and developers do make the platform useful

+ Programmers are have a greater understanding of what is really happening behind the scenes when something is happening on screen and because of that, have the ability to change very important things at the core like how SQL has variations like FQL (Facebook Query Language), the difference Linux Distributions etc.

+ Programmers by default write very efficient code and clean code; So efficient you don't have to take a second look at it.

__________
Programmers usually make products like Physics Engines, Game Engines, SQL, drivers, OS, Programming Languages, IDEs, (I think you get the idea)
__________

Neither one is better than the other. They work hand in hand to enrich the growth of the Computer science industry.

Got some ideas from ... you might want to check that out...
http://www.skorks.com/2010/03/the-difference-between-a-developer-a-programmer-and-a-computer-scientist/



Monday, 9 June 2014

Is Facebook falling?

We all love Facebook or loved may be or you never did? Facebook has an interesting profile of members. Members who always complain about any little change Facebook does to their user interface. There is unanimous decision by Facebook's members that the change is bad and go on and on about how it moved this here and how it move that there! But guess what? They complained on Facebook? The complained on the place with the problem. I assume that when you have a problem on one platform, you move to another platform, an alternative, and speak your heart out about how what you moved from was that bad! So we can say may be they did not really have alternatives at that time. Thinking about it, many users of Facebook actually migrated from Hi5, MySpace and others and of course, there's no going back. But one question to ask is, would these users move if they were presented with another alternative at that time? Short answer, No! What keeps people on Facebook is not their interface per say. It's the fact that you meet your friends (your real world friends) there. Of course, if you do a quick Google/Bing search right now, you would find other unexplored social networking site with great user interfaces and interesting feature sets. You are not using those because your friends are not there. Facebook has your buddies there talking about all the trivia there is to talk about, view the pictures of the events you attended with your buddies etc. With the kind success Facebook has, it is logical to think other people would take the decision to build their own social networks and find a way to woo members there. And yeah, others tried! Tried really hard. Google+? The upcoming of Google+ was code-named, the Facebook killer. We've heard of other aspiring Facebook killers, Twitter? Well, while people find Twitter to be a viable replacement for Facebook, I think otherwise. Twitter and Facebook provide two distinct experiences for the user. On one hand, users are in this environment where they need to be heard by the respective audience concerning something they have "pledged" to talk about in a small but intelligent and concise manner.(Twitter) And there's another experience where the user is in their friends locality virtually and just talking about things only them can make sense of. (Facebook)

Facebook recently, bought Oculus Rift, bought Whatsapp and couple of other cool tech companies. You ask why? Good Question! When they bought Oculus Rift, I tried to figure out what could facebook (A social network) make out of Virtual Reality! Then ... wait for it ... Virtual Social Gaming. Now, not only do you get to chat with buddies in difference spaces, you get to bridge the spatial difference with virtual reality and add more value to the social experience you already have. Now remember this is just a projection of they might use the VR headset for. May be they may reverse engineer it to serve another purpose. The tech world is super dynamic and you must be open to surprises at any time. Then they bought Whatsapp which was met with a lot of mixed feelings about privacy and such considering the Snowden case and all. I heard people vowing not to use Whatsapp, saw people actively switching to Telegram. It seemed to me that Telegram came at the right time. However from what I have seen, the numbers have not changed. The number of active users of Whatsapp may have reduced slightly, but it did not make Telegram any bigger. Telegram enticed users with end to end encryption allowing you to have super secretive chats etc. But what happened? In my next post, I will delve into the battle of Whatsapp and Telegram and why Telegram does not seem to be winning.

So the big question. Is Facebook falling? Looking at all these current tech take-overs by Facebook, it is obvious, they do not want to go down so easily. On the general look things, a lot a users seem to have lost interest in Facebook. The number of active users seem to have decreased over the years and here is why. Mobile. With the advent of mobile apps & technologies, people stay longer on their phones than on their PC. You might say ... Hey Facebook has a mobile app. But lets face it. The user experience you get on the Facebook PC version is totally different from the mobile app version. The mobile app version seems to be very sluggish to me as compared to the Twitter app on my mobile device. Twitter has probably gained more grounds when it comes mobile usage as compared to Facebook. So it is hard to project what Facebook will make of companies they have in their "possession", but as a tech enthusiast, I am hoping they cook up something very very cool.

Thursday, 29 November 2012

Intro

Hello, this blog basically contain entries of what comes to mind with respect to programming, making software etc. If I am working on a project, I'll be blogging to keep track of my progress. Hope you enjoy reading it. You might learn about how I approached some problems and perhaps help you find answers to your problems. You can also suggest better ways of accomplishing some task.


For Now, I am working on a Project I have code named SABE - Simulated Avatar Based Environment. This is actually my final year project. The reason I chose it as a final year project was because it is cool(super cool) and I can do it. I am so passionate about 3D visualization and game development. More to that I love the school I am in and I want to make some contribution to the school by making this system for the school. Before I continue, if you intend using this idea, be sure to contact me for approval. I might sue you in the future if you develop this idea without my consent Thank you.

This project will feature a stripped down version of the whole but as time goes and I get access to more computer resources, I would higher versions of the system

What SABE pronounced "Say Be" really is!
It consist of a Virtual Representation of my school which is actually the "world" for the system. People in the school(possessing school userIDs) will have the ability to login into the system and they are assigned an avatar. The user has total control over this avatar though and the avatar is fully customizable like physical appearance etc. This avatar would be controlled by the user around the world chatting with people as well performing other activities like attending meetings, parties among others. The avatar also has the ability to connect to their Facebook accounts to increase the immersion of the environment. (my o my its big: that was just by the way.(just got another great feature i can add in the future) I can have virtual adverts in there!!)

The Avatar Selection

Currently, there are two characters you can selected for both male and female

Almost done with the avatar creation room. Now you can change the colors of the clothes you assign your avatar. Currently working on changing faces and other unique bodily features. I hope its gonaa be easy.

Of the top of my head, some of the features that differentiate SABE from other chat platforms like skype is the ability for you advertise in the virtual world like pasting posters and banners on noted locations in the virtual environment. The general motivation for this system is its intuitiveness; that in the future, if you want to accomplish any task, just imagine how you would have done so in the real world and try it out in SABE for example, walking to the convenience store to buy airtime which would be automatically updated on your phone. Think about it, integrating multiple payment systems with SABE, all your messaging apps connected to SABE... GREAT
To be contintued!!