Monday, December 15, 2014

SVG Sequential Transforms Priority

When you want to do a series of sequential transforms on an SVG element, keep in mind that it is applied right to left.

In this example, this SVG code does the translate first, then the scaling, then the rotation.


<g transform="rotate(45) scale(2) translate(100, 100)">

It is counterintuitive but that is how it works.  Hopefully this solves some problems you might have on your SVG transforms.

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

Programming and Computer Science

Powered by Blogger.