RSS
 

Posts Tagged ‘Ruby’

New Blog New Focus

06 Jun

Over the past year I have grown quite a bit as a developer and realized that I should talk more about being open to expanding your knowledge outside of the technologies you are currently comfortable with.  One year ago I was a ASP.NET C# webform developer that didn't know exactly why people didn't like ASP.NET and considered it a leaky abstraction.  

I really wanted to get better with testing my software and the path that lead to developing testable websites brought me to the View-Presenter pattern.  This pattern worked wonders to be able to test a webform site and really allowed me to focus on the TDD experience.  During this work I felt that I was finally writing some rock-solid code that was doing what I thought I wanted it to, and with the testing would keep doing it through the changes.

After getting comfortable with this I started to look into Ruby on Rails since there was so much talk about it and how completely agile it was.  The first couple of months that I sat down and used ruby I was not sure that it was worth looking at.  Some of my posts here show my skepticism that I felt.  I thought that without a compiler and with the looseness of the language that "real" applications weren't possible and that it was more the realm of the casual developer that didn't have to make a serious professional program.

After struggling for a couple of months I started to see the light.  Once I was writing tests and really understanding what I could do with Ruby, using C# started to become frustrating.  To get software written in Ruby you really can just go and have a great amount of ease in re-factoring your code because everything isn't tied down so tightly that you had to expressly expose all aspects to being extended or overridden.  In Ruby if you want to replace functionality of a class you can, no special keywords or design considerations.  With C# the style of code that you have to write to become testable changes from what you would write even with good OO principles.

I was learning Ruby so that I could create Rails applications.  What I have enjoyed about Rails the most would be the guidance and ease of developing an application.  Testing is required practically and supported to an extent I had never seen.  The design of the system made sense, it is put together by people that used it daily.  It is added to by people using it and the community was very helpful and exciting to be around.  I was very excited, but thought there must be something that makes Rails development not as easy as it seems.  Otherwise why isn't everyone developing using it?  So far I have not run into frustration.  The only aspect that I am hesitant of is running the web servers using rails.  At the start of my experience there seemed to be quite a bit of memory usage and a need to do frequent server resets.

Worried about this I didn't feel comfortable pushing the technology to co-workers since I didn't want to recommend a system that may not be as solid as what we were used too.  Then Microsoft announced that they would be making a version of ASP.NET that is built with an MVC architectural pattern.  Initially this was somewhat exciting.  All of the benefits of rails I thought, but with the stability of .NET.  

So far this has been a good direction for Microsoft, but it feels to me like I know that the people writing it aren't thinking about using it first.  They are driven by the desire to make maintaining the software easy.  This has led to pain in my experience.  Releases aren't very easy to use with testing.  There are side projects that have been created to ease this, but it is obvious to me that these solutions could have come from the actual framework creators.  To me there is still this we will make the framework you figure out if it works for you mentality.  Usually this isn't a problem if that attitude is from people that are working with the technology, but here I don't believe this is the case.  

I have more and more felt that Ruby on Rails is the best way to develop web based software.  I am more intrigued every day and have yet to run into a decision that I thought was made without the first priority being a benefit to the usage of the framework.  Now with this experience I wonder what other languages and skills would help me solve problems better.  This will be my focus on this blog so that I can chronicle my experience and hopefully meet more people that enjoy solving problems the best way they can.
 
 

Rails Notes

12 Nov

I’m reading through Agile Web Development With Rails tonight and have come across a couple of interesting tidbits that may be good to know later.

When writing code in .rhtml files

<% 3.times do %>
  Test<br />
<% end %>

will result in the following html

Test<br />

Test<br />

Test<br />

to prevent this add a minus (-) before the close of the code sections to indicate that the last line break should be ignored.

<% 3.times do -%>
  Test<br />
<% end -%>

Also there is a helper method “h” that is really nice. It will parse any string into the markup required to cause the string to be rendered as it should. This eases site design and helps to protect from some hacks. So

<% h(“3 < 4”) %>

is translated to

3 &lt; 3

as desired.

Also something that is worth noting is that the views have access to all instance variables in the controller that calls them, even private variables.

 
 

String to number conversion in Ruby

19 Sep

When converting a string in Ruby to and in using the value’s to_i method it will do some interesting conversion.

Examples:

  • ‘5’ becomes 5 — Cool
  • ‘I have 5’ becomes 0 — kind of a weird failure, 0 could be a perfectly fine conversion
  • ‘5 is five’ becomes 5 — Really odd behavior, but the conversion is done until an incorrect character is encountered.  After this the rest of the string is ignored.  So
  • ‘5 is 5’ becomes 5
  • ‘5,000’ becomes 5

Where this is helpful so far is when someone is entering text through the command prompt.  When a person enters text prompted from gets the new line added from the user pressing enter is included.  So if a user enters 5, then the gets string contains ‘5n’.  In most languages this would cause and issue, but with how ruby does it’s conversion of ‘5n’ becomes 5.

 
No Comments

Posted in Web/Tech

 

String Multiplication in Ruby

19 Sep

This is pretty interesting. In ruby you can multiply a string. So if you wanted you could write

puts ‘Repeat ‘ * 3

Which outputs:

Repeat Repeat Repeat

I like this and I do think it makes sense.  It does not work if you write

puts 3 * ‘Repeat ‘

Which I think is wrong because multiplication should be commutative.

 

Now doing this has somewhat caused a problem for concatenation though.  By multiplying string it is not clear what should happen when you do this.

puts ‘Repeat ‘ + 3

So ruby outputs an error, something that I’ve enjoyed recently in .NET has been that if you add or concatenate a string with another object the other object is automatically changed to a string, using the ToString method I believe. 

I would think that this is a much more common scenario than multiplying strings and therefore a bigger loss to productivity and readability of code.

 
No Comments

Posted in Web/Tech

 

First Ruby WTF

19 Sep

Well I was reading through Chris Pine’s Learn to Program and he made a curious statement about how money is handled when programming.

In practice, most programs don’t use floats; only integers. (After all, no one wants to look at 7.4 emails, or browse 1.8 web pages, or listen to 5.24 of their favorite songs…) Floats are used more for academic purposes (physics experiments and such) and for 3D graphics. Even most money programs use integers; they just keep track of the number of pennies!

Now does anyone actually do this in the outside of the Ruby world?  When I use .NET I use an ORM and I map to the SQL money column type to a decimal.  I’m somewhat interested to see what ruby does in this situation.