↓ Archives ↓

Posts Tagged → javascript

Project Я: A Ruby/HTML5 Visual Novel

first scene

As promised, here’s the game I made for the Global Game Jam.

Seeing that I couldn’t think of a quick web-based game matching the theme “Ouroboros”, I just went ahead with a joke I made sometime after the Ruby Rumble:

Sa susunod na Rumble, gagawa ako ng hentai game sa Ruby!
(For the next Rumble, I’ll make a hentai game in Ruby!)

So yeah, that’s how I ended up with a Visual Novel. Unfortunately for the people expecting sexually explicit scenes (which was about a third of the people who saw the game), the “game” I made was more ATLUS/Capcom than Key/Type-Moon.

Anyway, it’s more of a tech demo than a game, with me trying to implement a Cloud-based multi-platform visual novel with psychological themes and non-standard tactical RPG gameplay. Or in non-buzzword speak, an HTML5 adventure game playable over the internet.

Play it here.

Please use fake email addresses so you could view the changes when you change the answers to the initial questions.

Some boring technical details:

I didn’t release the code because of how ridiculously horrible it is. I mean, using GET to update state, WTF?!?

This post by Bryan Bibat is from existence, refactored.

Web Developer Interview Questions

Earlier this week, I had to interview a bunch of applicants for a web developer role. The idea is to filter out those who aren’t really experienced as the job asks for people with at least 6 months of experience. Anyway, below is the test I gave them. I don’t feel like giving something like it again in the future (it’s pretty crappy IMHO) so I think it would be a good idea to share it instead of just throwing it away.
Determine whether the statements below are true or false. Be prepared to explain your answer.
  1. A primary key can be composed of multiple columns.
  2. When you have two tables in a parent-child relationship (i.e. one table has a foreign key referring to the other table) deleting a parent record will delete all child records of that record.
  3. Escaping special characters is the best way to avoid SQL injection.
  4. You can undo UPDATE and DELETE changes to the database.
  5. The VARCHAR data type can be used to save space when used over CHAR.
  6. When using an RDBMS, normalization must be done for all tables.
  7. Indexes speed up database actions.
  8. Foreign keys are usually indexed.
  9. Many-to-many relationships are implemented via junction/join tables.
  10. Some HTML elements have been deprecated in favor of CSS.
  11. The <strong> element can be used interchangeably with the <b> element.
  12. Under strict XHTML rules, <br> is not a valid usage of the line break element.
  13. The href attribute of the anchor element only accepts relative and absolute links.
  14. The image tag is a block element.
  15. When a form is submitted, the submitted data is derived from only the input elements inside the form.
  16. Multiple elements can have the same id attribute.
  17. Web servers serve content at port 443.
  18. A web server can identify if a client has visited the website before.
  19. POST is idempotent.
  20. A browser redirect can be initiated by a response with an empty body.
  21. In JavaScript, the var keyword is optional when declaring variables so it can be omitted in all cases.
  22. You must specify a function name when declaring JavaScript functions.
  23. Ajax will prevent you from performing other actions until the Ajax action is completed.
  24. You are limited to using XML in Ajax.
  25. You cannot change the values of a class variable.
  26. Constructors are instance methods.
  27. Polymorphism refers to the ability to define functions to have different behaviors depending on the passed arguments.
  28. High cohesion and loose coupling can improve coding speed.
  29. You can combine the features of two classes via inheritance.
  30. Encapsulation is primarily used for security reasons.
Answers below the cut. Continue reading →

This post by Bryan Bibat is from existence, refactored.

Rails 3 upgrade part 4: Prototype helpers and Javascript

Rails 3 is embracing the unobtrusive Javascript (or UJS) mantra which is good because it is the right way; at the same time, it is bad because many applications will break when they upgrade to Rails 3. On the other hand, who’s expecting a smooth upgrade anyway :)

In my test application, I used jrails because I am more interested in jQuery than Prototype. But since jrails doesn’t work with Rails 3, I removed it.

When jrails was removed, I received this error:

  undefined method `observe_field' for #<#<Class:0xb6867e58>:0xb6865b6c>

Install Prototype helper plugin

observe_field’ is a Prototype helper and Rails 3 removed the the link between its Javascript helpers and Prototype. The goal in Rails 3 is for developers to use their preferred Javascript library. Also note that remote_#{method} helpers have been removed from Rails and moved to Prototype Legacy Helper plugin . To install this plugin, just do:

  rails plugin install git://github.com/rails/prototype_legacy_helper

Remove jQuery

Once the prototype_legacy_helper is installed, the missing method is gone but observe_field is not triggering. Removing jQuery fixes this problem.

Now what if you want to use jQuery instead of Prototype? It depends how dependent your application is to Prototype. I have not found a jQuery equivalent for Prototype helper plugin yet so that would be an issue like in my case. Based on this jQuery and Rails 3 tutorial, using the jQuery UJS driver looks very easy.


This post by Greg Moreno is from Greg Moreno.

jQuery to prevent form submission via ENTER

Note to self: