About two years ago, my interest mostly focus on how to write a well performed code. I was enjoying it, I had a lot of research about it, and I love talking about it with people. Every time I wrote a code, I just jumped in to the code and type everything. “Yeaaah! I’ll write some freaking fast codes.”, that was what I thought. However, at one stage, I felt there was something missing in what I did. Something was wrong with the way I did my job (read: hobby).
The problem was I didn’t feel that I was confident with my code.
I was progressively better in writing well performed code, but it was linear with the bug amounts. How foolish I was, pushing some buggy codes to the production. What the hell!?
My habit also brought another problem. By jumping directly to the code and typed everything, made the codebase getting dirty, difficult to read, and hard to maintain. It took me a longer time to ship small feature, mostly because there are a lot of code duplications, it is unreadable, and super complicated. So what should I do?
I needed something that really could help me getting through with my confidence with my own code. Something that could help me writing a better and readable code. I just couldn’t do it myself, I needed someone to teach and guide me about it.
Continue reading “What “4 Rules of Simple Design” Means to Me”
A few weeks ago, I encountered a problem, which I think, really really weird!
How weird was that?
So, I have some tables with one to many relationship, let’s say table
articles has many
images has many
image_sizes (the tables are different with the actual case). The system has a job that executes codes fetching
Article load it eagerly with
ImageSize. We thought it was safe, since there were no complicated process at all. Just load at print it!
After a while, booooom! We had 500 in production……. Continue reading “My Experience with
These past days have taken me to a place that I need to learn more about executing a raw query, without relying on generated active record object (existing model classes).
Last week, I wrote a lib, that I think, required me to wrote it with custom or raw query. My research was filled with these kind of results
I used it actually. But, until I find it hard to produce a query string that free from SQL injection. Anyone knows how to do it? Continue reading “Raw Insert Query with ActiveRecord”
This afternoon, I had a chance to discuss about something with my pair about the difference between comparison operators and control flow operators in Ruby. Yes! What is the actual difference between && || operators and “and” “or” operators?
I started Ruby around 4 years ago and I wrote a code like this
if (a == true and b == true)
# my code
And I swear I won’t do that again! Continue reading “Understanding Ruby Comparison and Control Flow Operators”
This afternoon, I was asked by my friend about how to make email column allow redundant data with rails and devise. Honestly, I never did something like that before and I couldn’t imagine what kind of case he was trying to solve with that particular design.
What I advised him was try removing the unique index attached to email column. That’s actually an easy task, just generate a migration file and make a little change so the migration file will be like this
class RemoveEmailIndexOnUser < ActiveRecord::Migration
remove_index :users, :email
Migrate it and boom! The index is now gone. In case, you still need the index, but don’t want it to be unique, you might have this code after the
add_index :users, :email
Continue reading “Redundant Emails with Devise”
Hi Coders and Hello 2015!
Happy new year to all! Yeah, I know it’s already January 12, but it’s not to late to say that, since we’re still in January. :D
Guys, I have a new hobby now! (Oh please! Don’t you have anything else to tell people?)
Yes! Wandering around exploring github to find some awesome and cool project. One thing that I found interesting is peek. It’s like a bar that shows some helpful information related to your application performance. Queries performance is one of them. Continue reading “Addition for peek-mysql2″
Lately, I’ve been involved intensively in Test Driven Development environment. Which is great! I’ve been waiting to have this experience of writing codes with clear standard. However, there’s no such thing of perfection (maybe I can talk about this later), but I give my highest respect to this new experience.
This cause some changes in how I write codes, to be precise, my attitude towards software development. So, there are more questions in my questions list, which I need to answer one by one, from the beginning of writing codes until the end. These are the complete questions:
- What’s the story?
- What am I suppose to do to solve it?
- Have I pulled new revisions?
- Do I need to create new branch?
- Do I need to write behaviour test?
- Do I need to write view test?
- Do I need to write controller test?
- Do I need to write model test?
- Do I need to write lib / other test?
- Have I completed the story?
- Do I need to refactor?
- Do I need to extract the codes?
- Have I tested all related codes?
Those 14 questions are mandatory, in order to make sure that I always deliver quality codes.
Anyway, there’s other big question which should be asked in the very beginning.
Do I need CI?