Skip navigation

Tag Archives: programming

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.

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

Finally I think the pagination is all done. Now I just need to fix a few things, then the website should be online sometime in the next few hours 24 hours.

pagination!

pagination! yes this is how it appears on the site

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…

I’ve spent most of today reading books and articles. Here’s some of the stuff I’ve been reading:

Now I’m getting back to coding. By the way I wonder what editor people use when coding in PHP. I’m using Notepad++. I’ve tried moving to many other editors and IDEs but have always come back to Notepad++. It’s just so lightweight and easy to use. And it’s coded in C++. The only other editor I would consider using for my current project is Crimson Editor, for mainly the same reasons as Notepad++. But it doesn’t look as pretty 🙂

Project aside I really need to get some exercise. I’m planning on going for a long bicycle ride this week … even though the weather’s freezing here in Melbourne, Australia!

I was looking for a way to zip files with PHP just a second ago. I need this to implement a feature in the website. 🙂 It happens that PHP V5.2 has the ability to create zip files. Awesome.

But as I searched for what I needed I got derailed. I saw a message that said PHP is a “language for beginners”.

I strongly believe that that is very bad advice. PHP is a language that is easy to get started in. It is not easier than any other language to actually program properly. It is harder. It’s easy to program bad code in PHP because it so often lets you, and as a consequence many say that PHP is a bad language.

I believe PHP is not suitable for beginners, but I don’t think it should be labeled a bad language. Just because PHP lets you write bad code does not mean you should do it. A loose analogy: If you have a Ferrari it will let you drive at 300kmh (185mph) in a 50 zone. It would be irresponsible to do that. But would you argue that Ferraris are bad because it lets you go that fast? Maybe, maybe not.

And because PHP is so accessible to such a wide audience there’s so many (bad) tutorials and books out there to derail otherwise well-intentioned beginners. An example is Beginning PHP5, Apache, MySQL, Web Development. Read it if you want but I highly recommend to avoid it because it seems like most of the code in the book is just horrible spaghetti code. I’m only singling out this book because its one that I’ve read. If you really want to learn PHP I highly recommend to try looking in a University bookstore/library for the more academic titles, instead of the local bookstore.

Although having said that about PHP, I want to make it clear that ultimately good code results from careful thinking and training, not from the language. It is also important to understand that bad code can be written in all languages. Other languages like Java or Ruby have more constraints that help a programmer avoid some bad practices but they aren’t going to instantly result in good code being produced.

EDIT: Fixed up some sentences to make the article flow better, esp. last paragraph 🙂 I don’t think I’ve changed the meaning of anything, just made things clearer. In the future I’ll plan my articles better to avoid having to do this much editing …

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)

Wow – there’s still so many things to do until the website becomes ready. Can’t see the light at the end of the tunnel yet. But hopefully it’ll come soon.

FYI, the site I’m developing is actually a user profiles website … kind of like a dating website but it has nothing to do with dating. And like I said before, it’s quite simple.

The depressing thing is, the closer I get to the launch date, the more I feel that I haven’t actually carved a niche to gain a foothold in. But still, I’m hell bent on finishing this project 🙂

Anyway, you might be interested in taking a look at my SVN (subversion) commits –

svn commits

svn commits

As you can see the most commits I did was 19 on the 28th of June. And I only began using the SVN repository on the 16th of June although I had been working on an off in the previous months before that. SVN is an indespensible tool in a team environment, and even if you’re working alone (like me), it helps that you can access the latest version of the project on any computer, and it’s also a good source of backup and you get to compare pieces of code across different versions of your software.

Although I’ve still got a lot of coding still to do, I have been thinking of some form of offline “guerilla marketing” like making little stickers and sticking them in random places in my University. The stickers themselves would not reveal much about the site, in an attempt to appeal to the audience’s curiosity. That may or may not work, I don’t know. Finally, I’m not unaware of the legal implications of this sort of advertising so I had better tread carefully.

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 >:)