Monday, October 14, 2013

Local Devfest, Software Freedom Day and Frameworks



The last 4 weeks were awesome!

There were not 1 but 2 events that any local web developer was anticipating!

The first one was Software Freedom Day held last September 21. The second one is the GDG(Google Developers Group) Devfest, the 1st one held in Mindanao, Philippines ever!

I was also able to utilize some new frameworks in my job. One is a JS framework called KnockoutJS. The the other one is Laravel, a PHP framework that is the talk of the PHP community nowadays

More information are shown below.

Software Freedom Day

Last September 21, Software Freedom Day was being celebrated here locally in Capitol University.

The tracks in the morning ranged mostly dealt with Web technologies
The tracks in the afternoon most dealt with the Sysadmin side, a programming language and a continution of the tracks in the morning
  • More Open Source tools
  • Kali Linux, a Linux distribution focused on Security
  • Common System Administration task for Novices
  • Ruby Programming

GDG DevFest Cagayan de Oro

Immediately on the next day, the first ever Devfest in Mindanao, Philippines was being held in Cagayan De Oro City. N Hotel near the Kauswagan highway was the chosen venue to host it.

As a Web Developer, it was a very exciting event! We fully expected to learn some cool new language or some new technologies being shown.

Unfortunately, there was a travel ban in effect at that time for some countries because of some bombing incidents in the southern part of Mindanao. It was sad that some delegates such as the one from Australia who should have been the one doing the track on Go, was not able to go. 

But even with that setback, some delegates were able to push through with their tracks. Woohoo!

The tracks for the event were divided into two groups, a room for each of the groups. You can freely move over to the other room if a track there interested you.

Here is the list of tracks

Group A
  • HTML 5 Frontend Development
  • HTML 5 Game Development
  • AngularJS
  • Technoprenuership
Group B

KnockoutJS

One of my jobs was to implement a simple ledger mobile app. KnockoutJS was the one that is chosen for the job.

I found out though that KnockoutJS is more like a bare bones data binding library as compared to AngularJS which is more of a full blown stack.

It doesn't have any advanced features like routing system, directives, etc. But I feel that this is intentional.

After using it for many days, it certainly taught me a lot on Javascript Frameworks and how they work. It really is fun doing everything without reloading the page.

Laravel

Laravel was something I stumbled upon easily because of the amount of information and praise PHP developers were giving it.

It piqued my interest because of it's OOP centric framework and PHP 5.3+ support. Morever, Codeigniter has not been in a very good place lately so I was looking for something new that could replace it.

I have just been using it for a few times and I found it very good. It has that same Codeigniter feel where you feel that the system doesn't force you to follow a rigid convention.

Why bother with all of this?

The programming/IT field is a field in constant state of flux. You can't just learn one thing and ride it into retirement. Languages, frameworks, skills usually become irrelevant quickly.

On the bright side, learning something new is something that people in this field mostly enjoy so it is not really something to dread.

It is imperative that developers learn new stuff so that their skills will stagnate but that means learning new stuff which is enjoyable.

Thursday, September 12, 2013

CI Multilanguage Module v0.2 released

One of my ExpressionEngine projects needed to support Multilingual output for the frontend interface. Here are the feature set that I wanted

  • I only need it to change static data and lookup table values. There is no need to translate the Control Panel.
  • Since I already worked on Codeigniter before and ExpressionEngine is using Codeigniter as its underlying framework, I wanted an addon that leverages that existing framework
The first thing that an ExpressionEngine developer does when he sees that a specific feature is needed, he should check out if an existing solution already exists.

For ExpressionEngine, sites like Devot:ee and Github make it very easy to find an addon that you need.

I tried finding a good and free solution but unfortunately, I can't find one after evaluating the free available ones. Paid solutions are out of the question due to project budget restrictions.

I decided to just make my own add-on since I felt no one bothered to build it. I am putting it on Github in case someone might find out that it works for them.

Get it at Github

Monday, September 2, 2013

3 simple things you must absolutely do when starting an i18n PHP-MySQL Application

These are 3 simple things to do that will not take much of your time before starting on your project.

  • Make sure the database is in UTF-8 format when you create it
  • Make sure the MySQL connection uses UTF-8
  • Make sure you use UTF-8 encoded files

Many unnecessary and hard to debug bugs could be avoided if you do these 3 things. 

Saturday, August 24, 2013

How to delete versioned SVN files from repository without deleting locally in TortoiseSVN

TortoiseSVN


If you are a developer working on a Windows operation system and using SVN for your version control, chances are that you are using TortoiseSVN so that you don't have to manually input SVN commands. Instead, you can just use the context menu items to click whatever command that you want to execute.



I will be particularly be talking about the delete command in this article.



Don't delete my local files!


There is one use case that really annoyed me about deletion in SVN. 

That is when I am trying to remove SVN files from the repository but somehow retain it in my local copy.

The delete in the context menu deletes both the files from the repository and the local copy.

To circumvent this problem, here are the steps that I did
  1. Copy the files and folders that I want to retain to a temporary folder. 
  2. Delete the files using the SVN context menu. This will delete the local copy too.
  3. Move the files back to where I copied them from
This solution is tedious and error-prone. What If I copied the .svn files? What if I forget to copy an obscure yet essential file? Surely, the whole purpose of version control is avoid these problems entirely!

I grudgingly used this workflow before because I didn't have the time to come up with an elegant solution to the problem. It is only recently that I finally decided to find a better solution. I didn't believe that SVN doesn't have a feature for this exact use case since I think this is a common enough to warrant this feature.

Sure enough, SVN does have it.

The Solution


To do it via the command line, you can simply type this
svn delete filename --keep-local

However, TortoiseSVN users will probably prefer a "point-and-click" solution to do this. Fortunately, there is a way!

The way to do it is
  1. Select the file(s) that you want to delete
  2. Hold the Shift button
  3. Right click on the file(s) that you want to delete
If you go to the SVN context menu, you will now see that there is a new command called Delete(keep local)



This is the command that we want to run.

Hope this helps!






Sunday, August 11, 2013

Android 4.3 Features



After a long wait, I got the OTA(Over the Air) update for Jellybean 4.3 for my Nexus 7.

I waited for weeks for the my Nexus 7 to get the update. My Nexus 7 is stock Android so I don't have the problem of other,carrier branded devices of not being able to get Android updates as soon as Google releases it.

But like most people downloading the update, I really don't know what improvements Jellybean 4.3 brings. So in order to not look like a fool, I searched the internet about the new features and fixes.

The official android page contains the list of new features. No need for me to repeat what is being said in that site since I will only discuss in length only those those features that are significant for me.

Multiple Profiles/Restricted Profiles


Before anything else, this feature is only available for tablets for now. Since I have the Nexus 7, I was able to enjoy this feature.

This feature happens to be very useful for a number of reasons. One is that people who want control over their own profiles will appreciate. It is very easy for some people(especially kids) to just randomly or accidentally change features that you may have painstakingly set.

It is also good for streamlining your tablet for specific tasks only. For example, some companies distribute work-only tablets to their employees. Restricted profiles will allow those companies to control the types of applications those people will use. Companies don't really appreciate it if you are wasting company time on unproductive applications(like games for instance).

Bluetooth LE/Smart


I don't have any device or accessory that actually uses these technologies so I can't really expound on what the benefit this has. But the main advantage that is implied by the site is low power consumption.

New Camera App


I can't really expound on this since my Nexus 7 doesn't have a back camera and no pre-installed camera app. Sure, there are ways to get a camera app for the front camera but I decided that it was not worth the time getting it since the front camera is really made for just video conferencing rather than taking pictures seeing that it only is 1.2 Megapixels.

Improved Keyboard/Gesture Typing


I always preferred manually typing letters as opposed  to "swiping" to compose my messages because I am in a country where English is not the native language. Regardless, just by trying out keyboard in 4.3 using swiping, I can definitely say that many people will find the functions very useful.

I remember being annoyed that I have to input space every word when swiping before. The 4.3 keyboard makes it so that you don't have to. Just lift the word and it automatically adds the space. The new keyboard also has better text prediction/anticipation abilities now since it can now complete sentences based on a few words.

Better Game Graphics/Google Games


Honestly, I played games after the update but did not see something significantly changed. I guess this only matters when you are playing 3D games(and even then, only those that really push processing power and graphics). I did not have any 3D games installed on my Nexus 7 since I prefer light, 2D games on tablets.

Google Games is a new app that offers leaderboards and matchmaking. For me, this is really has the potential to be a great feature. However, it seems to me that current games doesn't utilize it in such a way that is seems to be exciting to me. I have yet to see a multiplayer mobile game application that is as exciting as LAN parties of old or the MOBA games of the present. 

We will see if game developers can utilize the new features in the future.

Better Location through Wifi


You can see this feature in WiFi-> Settings -> Advanced -> Scanning


Basically, it lets Google use your WiFi to better determine your location without having to turn on WiFi all the time. They say that WiFi is more accurate than GPS in big cities, or rather densely populated area when determining your location so I guess that one reason why they implemented this feature. 

However, some people are wary of anyone, even Google, tracking their location all the time in the background. This feature may be left unused for them.

Monday, July 29, 2013

How to Enable Sync in Samsung Galaxy Note 2

I was made aware of this problem when I attended a Google Developer Group Meetup this month. While the event was going on, I suddenly remembered that I can use the Party Mode feature of Google Plus to share the photos taken in the event. That way, everyone has a common place to access all the pictures

I tried to turn the feature on. But I was surprised when it complained that I needed to turn on Automatic Syncing in "Accounts and Settings". The last time I used this feature, I did not get this notification at all. I thought I never need to.

So after exploring the Settings, I found out that that I can turn on automatic syncing in Settings -> Accounts -> Google for each of the accounts that I had.


I thought that was the end of it, but it did not do what I expected. When I tried to sync all of my accounts, the indicator that is supposed to show a green light to indicate that automatic syncing is disabled.


I was confused.

I have some friends in the meetup that have Samsung Galaxy phones and assured me that it should work.

But it never did.

So I tried many things like restarting my phone, trying to change it on my tablet and looking for other Setting options which might be the real option to change. But those actions proved fruitless.

I was frustrated enough by then that I searched Google for answers. I tried may keyword searches until I got the one that leads me to a site that gave me the clue to the answer.

The forum's solution said that I should simply go to my notification shade bar and turn on my sync there.



But I noticed something strange. There was no Sync toggle at all! This led me to believe that there must be some specific peculiarity with the Note 2.

So I went to Display -> Notification Panel, and sure enough, it was there. It was just not included into the default setup


So what I did was I put it there


I pulled down the Notification Shade, toggled on the Sync and bam! The syncing was fixed!




Finally! Problem solved. I was able to use Party Mode to take pictures :D

Friday, July 19, 2013

Expression Engine Parse Order

I have been using Expression Engine while working on some freelance projects the last few months. It is not free and I am only able to use it because a colleague I am working it bought a license for it.

Expression Engine is touted as the best Content Management System(CMS) for web designers. Even if I am not one of those creative types, I can certainly attest to the ease of use it provides to people who wants works on how the the page is displayed as opposed to knowing how the system works.

However, it can be a pain for web developers looking to implement a solution that requires lots of custom code and tweaks.

I am talking about the template parse order

Their templating system goes through specific steps when parsing each template. Usually, you don't need to know about the parsing order when working on your templates. In fact, it isn't apparent when you code your code is simple at first.

But the more complex your template tags are, the higher the chance of encountering an error that is caused or related to the parsing order.

In order to solve this problems, you need to understand the parsing order. The links below will prove useful.

Ellislab's Template Engine Documentation
Low's Expression Engine Parse Order(PDF)

Tuesday, July 16, 2013

Goodbye Enso, Hello Launchy

For the longest time, I have been using Humanised Enso as my launcher way back 2008.




At that time, launchers were not as popular today. There were only a limited number of launcher applications available so you have very few choices. Out of all the launcher options that I had, Enso was what caught my eye and I downloaded it to try it out.

And was it a joy to use. I was delighted by the fact that I don't need to use the tedious Start -> Programs Menu process anymore to access my applications. I can quickly access them with just a press of a button and typing the name of the application. Enso even has a "learn" feature where I can make it directly open folders, links, or portable applications by telling Enso to associate it with a word that I want. And most of all, it looks cool!

But the times has changed. While I was content using Enso, other launchers have tried catching up to Enso's features and succeeded.

Today, Enso's internal process of using shortcuts to access files is less efficient than indexing the filesystem. I also noticed that it was less responsive than the new competing launchers.

So I finally decided to try out other launchers. I quickly searched the internet for the best one out there and it was Launchy that was consistently suggested.




At first try, Launchy has these look and feel that is minimalistic. I also found out that you can navigate through your filesystem by just typing the path(very much like Unix/Linux filesystems), a feature I found very useful. We will see how Launchy fares against Enso(I will probably writing a review about it in a future blog post).

All in all, Enso has a good run but it is starting to show it's age. It was nice working with it but it is time to move on.


Programming and Computer Science

Powered by Blogger.