Samuel Liew’s Blog

News, events, and other interesting finds

Source: Web Designers Vs Web Developers, Visualised | Gizmodo Australia.

As I am involved in the visuals ministry in church, I usually have to check through the lyrics of each song before service for consistency. This is tedious work as there are many songs, and have to repeatedly do the same validation each week. As any knowledgeable IT geek would do, I wrote a UltraEdit macro to automate the task using Regular Expressions to find and replace stuff.

Currently this script does the following:

  • Correct all words to proper capitalization
    - Capitalize first word of every line
    - Capitalize any word that refers to God. E.g.: Jesus, Lord, Holy Spirit, Father
  • Standardize words/punctuation
    - Replace angled quotation marks (“) to standard (")
    - Replace tabs with a space
    - Replace words like “O” to “Oh”
    - Captalize labels and add buffer lines before each (Chorus, Verse, Bridge, etc.)
  • Removes unnecessary stuff
    - Lines with song chords, if any
    - Multiple spaces
    - Trailing spaces
    - Multiple blank lines
    - Certain punctuations

Example song (before running the macro):

2. Tell the world Verse 1: F#m Don't want to stand here and shout your praise, F#m And walk away and forget your name. F#m I stand for you if that's all all i do, F#m 'Cause there is none that compares to you. Pre Chorus: F#m F#m 'Cause all i want in this life is you. F#m And all i want in this whole world is you, you, you. Chorus: Bm7 D A E Tell the world that jesus lives. F#m D Tell the world that. tell the world that. A E Tell the world that he died for them. F#m D Tell the world that he lives again. Verse 2: F#m No longer i, But christ in me. F#m 'Cause it's the truth that set me free. F#m F#m How could this world be a better place, by Thy mercy, and by Thy grace. Bridge: A Bm9 F#m D Come on, Come on, we'll tell the world about you. A Bm9 F#m D Come on, Come on, we'll tell the world about you.

Example song (after running the macro):

Tell the world Verse 1 Don't want to stand here and shout Your praise, And walk away and forget Your name. I stand for You if that's all all I do, 'Cause there is none that compares to You. Pre-Chorus 'Cause all I want in this life is You. And all I want in this whole world is You, You, You. Chorus Tell the world that Jesus lives. Tell the world that. tell the world that. Tell the world that He died for them. Tell the world that He lives again. Verse 2 No longer I, but Christ in me. 'Cause it's the truth that set me free. How could this world be a better place, by thy mercy, and by thy grace. Bridge Come on, come on, we'll tell the world about You. Come on, come on, we'll tell the world about You.

Here’s the macro code:

InsertMode ColumnModeOff HexOff PerlReOn TrimTrailingSpaces Top Find RegExp "^[ ]+" Replace All "" Find RegExp "^\s*(([A-G][\/ A-G a-z 0-9 #]{0,5})\s+)+\s*$" Replace All "" Find RegExp "^[0-9]+[\. \: \)]?\s*" Replace All "" Find RegExp "^(Key|key|KEY)[\. \: \)]?\s*[A-G a-g].*" Replace All "" Top Loop SelectLine ToLower SelectWord ToCaps Key END Key RIGHT ARROW IfEof ExitLoop EndIf EndLoop Top Find RegExp "\b(you)\b" Replace All "You" Find RegExp "\b(you've)\b" Replace All "You've" Find RegExp "\b(you're)\b" Replace All "You're" Find RegExp "\b(your)\b" Replace All "Your" Find RegExp "\b(yours)\b" Replace All "Yours" Find RegExp "\b(christ)\b" Replace All "Christ" Find RegExp "\b(father)\b" Replace All "Father" Find RegExp "\b(god)\b" Replace All "God" Find RegExp "\b(almighty)\b" Replace All "Almighty" Find RegExp "\b(son)\b" Replace All "Son" Find RegExp "\b(he)\b" Replace All "He" Find RegExp "\b(he's)\b" Replace All "He's" Find RegExp "\b(his)\b" Replace All "His" Find RegExp "\b(him)\b" Replace All "Him" Find RegExp "\b(himself)\b" Replace All "Himself" Find RegExp "\b(holy ghost)\b" Replace All "Holy Ghost" Find RegExp "\b(i)\b" Replace All "I" Find RegExp "\b(jehovah)\b" Replace All "Jehovah" Find RegExp "\b(jesus)\b" Replace All "Jesus" Find RegExp "\b(saviour|savior)\b" Replace All "Saviour" Find RegExp "\b(holy spirit)\b" Replace All "Holy Spirit" Find RegExp "\b(holy one)\b" Replace All "Holy One" Find RegExp "\b(spirit)\b" Replace All "Spirit" Find RegExp "\b(lord)\b" Replace All "Lord" Find "Lords" Replace All "lords" Find RegExp "\b(king)\b" Replace All "King" Find "Kings" Replace All "kings" Find RegExp "\b(Word)\b" Replace All "word" Find "prince of peace" Replace All "Prince of Peace" Find "my redeemer" Replace All "my Redeemer" Find "Kingdom" Replace All "kingdom" Find "your majesty" Replace All "Your Majesty" Find "my Spirit" Replace All "my spirit" Find RegExp "\b(o|oh)\b" Replace All "Oh" Find RegExp "\s*\b(((^(P|p)re)(C|c)horus)|((^PRE)CHORUS))\b" Replace All "\n\nChorus" Find RegExp "\s*\b((P|p)re([ ]|-)?chorus|PRE([ ]|-)?CHORUS)\b" Replace All "\n\nPre-Chorus" Find RegExp "\s*\b((P|p)re|PRE)\b" Replace All "\n\nPre" Find RegExp "\s*\b((C|c)oda|CODA)\b" Replace All "\n\nTag" Find RegExp "\s*\b((V|v)erse|VERSE)\b" Replace All "\n\nVerse" Find RegExp "\s*\b((B|b)ridge|BRIDGE)\b" Replace All "\n\nBridge" Find RegExp "\s*\b((I|i)ntro|INTRO)\b" Replace All "\n\nIntro" Find RegExp "\n\nIntro(.)*\n\n" Replace All "\n\n" Find RegExp "\s*\b((E|e)nd(ing)?|END(ING)?)\b" Replace All "\n\nEnding" Find ":" Replace All "" Find "’" Replace All "'" Find "‘" Replace All "'" Find "“" Replace All """ Find "”" Replace All """ Find "[" Replace All "" Find "]" Replace All "" Find " " Replace All " " Find " " Replace All " " Find " " Replace All " " Find "'S" Replace All "'s" Find "'R" Replace All "'r" Find "'V" Replace All "'v" Find RegExp "^'c" Replace All "'C" Find RegExp "(\r\n){3,}" Replace All "\r\n" SelectAll Copy

Download The Macro (requires UltraEdit)

I just had to make a new blog post on the success of my computer graphics assignment.

In this project, we have to create and render a scene using a program called POV-Ray for the given open-ended theme “My Toy Story”. We are required to design, model and beautify our own scene, which must consist of objects of different shapes, textures and surface finishes with simple animation. This assignment is worth 10% of the overall assessment for this unit.

We had to demonstrate the use of the required objects/components during the presentation, and being able to change the code to show that we know what we were doing. My tutor (Yasmin) said it was very well done and gave me full marks (according to the marking guide), and told me she would recommend to place it on the unit online gallery.

Screenshot of my scene

My Toy Story: Buzz Lightyear

Animation of my scene

Animation

Development

Early stage of development - putting the "pieces" together. The black lines are placed to intersect at the origin to aid me in positioning.

Original Model

Original model of Buzz that my image was modelled upon.

More information/source files are available on my school page.

Do you have too many friends on facebook that you don’t know? Now you can remove them simply by visiting their profiles. I wrote a Greasemonkey script that will help you do exactly that, and another that helps you add instead of delete.

What is Greasemonkey?

Greasemonkey allows you to customize the way a webpage displays on Firefox using small bits of JavaScript. Hundreds of scripts, for a wide variety of popular sites, are already available at http://userscripts.org.
- http://addons.mozilla.org/en-US/firefox/addon/748

Greasemonkey is a Mozilla Firefox add-on that allows users to install scripts that make on-the-fly changes to HTML web page content on the DOMContentLoaded event, which happens immediately after it is loaded in the browser (also known as augmented browsing). As Greasemonkey scripts are persistent, the changes made to the web pages are executed every time the page is opened, making them effectively permanent for the user running the script.
- http://en.wikipedia.org/wiki/Greasemonkey

Where to get Greasemonkey?

http://addons.mozilla.org/en-US/firefox/addon/748

Get the two scripts!

Script to auto delete friends:
http://userscripts.org/scripts/show/61122

Script to auto add friends:
http://userscripts.org/scripts/show/61660

Warning!
Don’t forget to disable the scripts when you are not using them, or else you will accidentally delete your real friends, or add people you don’t know!!!

I have added a new page for my uni projects, so you can see what I’m doing (reports, programs, etc.)

It is accessible from the navigation bar on the left.
http://www.samliew.com/school.php

Finally, I have completed the two years of NS. Today I went to collect my stuff and collect my pink IC from camp. Went well and I was able to leave camp by lunch time.

Today I also edited my onemangahelper script a lot and added features. One of my ‘fans’ also gave a good review for it.

Paste this in the browser address bar to select all checkboxes on a page:

javascript:el=document.getElementsByTagName('input');for(i=0;i<el.length;i++){if(el[i].type=="checkbox")el[i].checked=true;}void(0);

Paste this in the browser address bar to un-select all checkboxes on a page:

javascript:el=document.getElementsByTagName('input');for(i=0;i<el.length;i++){if(el[i].type=="checkbox")el[i].checked=false;}void(0);

Note that the above scripts won’t work for pages displayed in a frame (iframe or frameset).