Skip navigation

Tag Archives: cakephp

I just tried out Ruby on Rails today and I must say it’s pretty fun. I didn’t really have a go at scaffolding because it was deprecated at version 2.0 and I don’t like messing with deprecated things.

That made things a little harder for me to get started but I have a few simple forms that allows me to save stuff to a MySQL database, which is okay. Ruby seems pretty straightforward, reminds me a little bit of the brief stint I had at Python last year. The syntax takes a little getting used to, but that’s the easiest part of learning a new language. The thing I had most trouble getting wrapped around my thick head was the block, but even that is beginning to seem straightforward now.

A suprising thing was that I found it difficult to find up-to-date tutorials for Ruby on Rails, although there’s enough on Ruby. When I was learning CakePHP I seemed to have a lot more information. I miss the CakePHP Cookbook. With Ruby on Rails it seems like I need to do a lot more digging around on the net. I thought it would have been the opposite.

One thing I really like about Ruby on Rails (or more specifically, Ruby), is the solid OO model. While PHP has some OOP support, Ruby has a pure OO model – even numbers are objects. In a language such as PHP or even Java, numbers are so called “primitives”. In fact, even the irb (Interactive ruby) itself is an object. In fact, classes are also objects. Pretty much everything is an object (though I’m sure there are exceptions). The question is – does having a solid object-oriented model really help that much when developing web applications? It does seem to lead to cleaner code – with PHP you have to mess with and manipulate massive arrays instead of just interacting with an object – however I don’t see a huge advantage in having an OO model this solid for a web application. OOP is almost a necessity for custom-built and highly complex systems, but the focus on OO is not a huge issue in a web framework, generally speaking. There really isn’t that much freedom within a domain specific framework to exercise the full extent of the power of OO.

Will I keep using Ruby on Rails. Yeah, of course! I’m always interested in learning new things and building new stuff. Remember, I’m always building new websites/webapps. At times I will make extremely slow or no progress due to other commitments and life and stuff, but expect to see new apps being launched from this blog in the coming months.

P.S I have not left CakePHP. I will continue to use it as well. Both are excellent frameworks. CakePHP I like particularly because of the massive amount of information available on PHP. That is one significant advantage.

Still going here 🙂

So pretty much most of the coding is done and now the problem is attracting visitors:

  • I’m thinking of using Adwords but don’t know how effective it will be or how much I can spend.
  • I’ll try to place posters around my local Universities (there’s around 4 or 5 at least)
  • On the front page of the website I’ll put the most recently joined user profiles.
  • I’ll need to re-engineer the elevator pitch a bit.
  • As for the color theme, I WILL change it if I get many complaints about it, otherwise I’ll probably waste too much time changing the color theme. Yeah, CSS and logo-redesign is a pain 🙂 especially when there’s so much else to do.

I think the 3rd point is incredibly important but so are the others.

Okay, this is the unofficial “pre-beta” launch of PenpalVoice.com. The website is still pretty unstable but is open to everyone (who is reading this post), for testing. If you are interested in testing the website go to: www.penpalvoice.com/penpal/

The /penpal is required for now. You will be able to access http://www.penpalvoice.com directly when the testing period is over.

Depending on whether there are serious security breaches during this testing period, the website’s database may be reset after a few days before the “official” launch. If all goes well then nothing will be reset (hopefully this is the case).

Also, there are parts of the website that are obviously missing or incomplete. I’m keenly aware of this 🙂 However if you find any bugs please comment here. Any feedback welcome. Thank you!

Here’s a tiny peek at the website that will be launched in the next 24 hours.

The screenshot below shows the top half of the code of the User.php file. The User.php file represents the users table in the database, and its business logic. Baiscally, it represents a user. You can’t see any of the actual coding but you can see the structure of the page 🙂
Near the top of the page you can see a weird structure. That’s actually one large array declaring an HABTM (has an belongs to many) relationship with another table, and another large one declaring the validation rules of form fields.
I use the lightweight Notepad++ text editor, which has a nice feature where you can hold down CTRL and use the mouse wheel to zoom in and out. It’s nice for seeing the overall structure of the page. I also use it to make the font larger when I start to get eye strain.
code scroll

code scroll

EDIT: I want to show you one more thing. Here below is another screenshot of the bottom half of the same page. The part highlighted in the gray is the search method that searches for other penpals based on search criteria input by users. Notice how large the method is! (this is a bad thing)

big method

big method

Here is a quick summary of the progress towards launch day (scheduled for the 28th Australian Eastern). The local time is currently 5:05AM on the 26th July 2008.

THE CONCEPT
The concept is simple. The website is a language exchange profiles site. In other words, a penpal site.

THE NAME
The name and domain name of the website will be released on launch day.

THE HOSTING
I just signed up to Media Temple Dedicated Virtual hosting (dv), and I’m paying by the month because I can’t afford to pay upfront for a whole year. I did say I was going to sign up to the Grid (gs) plan, but giving it A LOT OF thought, I decided I’d just go straight to Media Temple’s Dedicated-Virtual (dv) plan for $50USD a month. The web application is custom built in PHP using the CakePHP framework, and it’s a user profile website – that combination seemed very unsuitable for the Grid plan due to guesstimated resource usage (it’s very difficult to actually estimate). What’s more, bugs are to be expected in the coding and it’s not unlikely that the web application will be a resource eater until the bugs are addressed. If I were on the Grid and started eating up resources it could qualify as resource abuse. However if I ran a blog or a personal website, I’d host it on the Grid, definately. More information on hosting later. I am currently familizaring myself with the (dv) control panel. It looks clean and beautiful.

THE MARKETING
I’m a newbie in marketing so I’ve been rather unprepared the whole way long. I have been researching Google Adwords as well as guerilla marketing methods. The idea is to clearly project to others what the website is about and inject passion into it. That should be no problem because I’m already passionate about language learning (currently learning German). Deutsch zu schreiben und sprechen gefaellt mir schwer aber ich lerne gerne 😉

MARKET POSITIONING
Obviously there are many other penpal sites out there. One thing that I did not research when deciding to develop the penpal site was how many there are already on the market! Unfortunately, I only figured this out just a month or two ago. It’s going to be near impossible to compete (I believe), but having put hundreds of hours (maybe over 1000), it would be a huge waste not to try anyway.

Also, I’ve had to change the focus of the website several times in the past month, in order to differentiate against other penpal sites. Will it be enough? Only time will tell.

I know I’m being rather vague, but that’s deliberate 🙂 You’ll see the website on launch day.

GRAPHIC DESIGN
Graphic design was done (and is still being done) in Adobe Illustrator, Photoshop and Fireworks. I previously finished the logo but now I need to change it again because of a last minute change website name!

The site is pretty simple looking (and also simple in general).

SITE DESIGN AND DEVELOPMENT
Due to limited resources (there’s only 1 person on the project, me) the website is very simple and is not feature packed. I think I’ve covered all the basic features, though.

There are many bugs I still have to fix, and a few features to put in! So I better get to it!

As always, more info coming…

Okay, so the title’s a bit provocative and documentation for mission-critical software such as those used in aviation and powerplants must be better documented. But generally, I think web developers enjoy the highest standards of documentation in the software industry, with game developers “enjoying” the worst.

From my own limted experiences so far, web development frameworks have the most understandable, most friendly and most thorough documentation in the software development industry. You think I’m biased because I am a web developer.

Not so. My university education has not been about web development at all, instead focusing on games development, which is primarly done in C++ and other languages and frameworks geared towards game development. My experience with the documentation in the games development world has been a nightmare. My first bad experience was with the Unreal documentation. I spent 2 semesters working with Unreal and seriously I hope never to use it ever again. Ever. Actually during those 2 semesters I was playing with PHP and neglecting my Uni work a little. Later, I came to use open source physics engines. If Unreal was bad using the documentation for these engines was a trip through hell and back and to hell again. What annoys is highly incomplete documentation, but also partly pieces of example code completely taken out of context therefore, useless. Despite my majoring in games development it’s highly unlikely I’ll pursue that as a career, in part because of crappy documentation but largely because of the impossible-to-enter industry.

In contrast, look at the documentation for CakePHP, django, symfony, codeignitor and Ruby on Rails. I think it’s just a breath of fresh air!

The opinions presented in the post was based on my own limited experiences so far, and so may not be representative of reality. If you disagree (or agree), please post a comment. Change my opinion if you will.

Have you ever been to sites that don’t have a progress bar when you upload a large file? It’s very frustrating not knowing the upload progress of large files. Many just think the download has hung up and quits the site.

As a consequence I’ve been trying to implement a progress bar for uploading large images. After Googling around I came upon SWFUpload. It’s a hybrid  Flash/Javascript library that handles file uploads and of course it can display a progress bar. Implementing it is more difficult than I thought.

The problem is that you can’t just copy and paste SWFUpload code into your application. Proper implementation requires knowledge of Javascript and my knowledge of it barely scratches the surface!

I think I’m making progress – I’ll make a post once about this topic again when I successfully implement it.

A few hours ago I needed to upgraded my version of the CakePHP framework to the latest, as the old version had one bug in particular I couldn’t live with. It was the Beta version after all!

The new version of the framework has a lot of fixes and improvements, a few of which affect my code. Naturally, I need to change a lot of code throughout my website to make it work properly again.

Here’s a tip for you programmers – When developing an application with any language or framework (but especially young ones), always refer to the latest version of the API documentation. When a new update comes along (no matter how small), update immediately. If you update immediately you won’t accumlate all the changes you have to fix later down the track.

An alternative is that you could change the underlying framework code to fix a specific issue, but I would never do that. It’s asking for trouble later. Workarounds come back to bite you on the ass, always. I promise you.

EDIT: Spelling and grammar errors (I should really proofread more)

Well, I said I was going to be posting everyday about the progress of the ‘Web 2.0’ website. It appeared that I haven’t kept my promise. I have no excuse. I apologize. I will be posting about my progress everyday from now on. I gaurantee you. So what have I been doing in the last 6 days?

You guessed it. Working on the website. Unfortunately, I had to attend to University and other commitments too, so I haven’t been able to give the website my 100%.

It doesn’t matter. Development is forging on. The deadline is nearing. My heart is pounding. Too dramatic? I thought so.

Anyway, I’m going to give you some technical details about the site:

  • It is developed in PHP
  • The backend is MySQL
  • I’m using the CakePHP framework for development

Tomorrow I’m going to talk a little more about the development process, and say a little about marketing. Possibly guerilla marketing tactics >:)