Archive for the ‘Work’ Category

Software design

Tuesday, June 13th, 2006

Just like any other places, there are both good and bad things about working here, where I’m at. The company has many great benefits, and other programs. One of them comes in the form of an employee requirement–each of us are supposed to take minimum of 40 hours of training in job related topics each year. Which is great. They really want us to improve on our skills and enhance ourselves. That enables us to do better job, helping the company more effectively.

What’s the catch? I hardly see any training that I’m truly interested in. I’ve been a paid programmer for 6 years with this company, in this department, working with same people. To this date, I’ve taken zero hours of professional IT/IS classes. I’ve taken a whole bunch of soft skills – how to manage better meetings, project management, speech, presentations, conflict management, e-mail etiquette, etc, etc. The list goes on. Some of them are useful.I’m very fed up with it, and I’m trying to deal with the management to agree that I can take a technical course. But there’s a great many obstacles to do this. For one, most of the outside, professional courses have the prohibitive price tags. $600+ minimum. $1000+ is often. WTH? For a 3-day courses?! Give me a break. And one more thing – class locations. This is one bad thing about living in Kansas – there’s nothing. Many of the courses are offered in either side of the coastal areas. Nothing in the middle.

I don’t take no as an answer very easily on these things. I’m always on the search on things I can read to learn more. Internet is great. It has shit load of junks. But it has loads of useful information as well. The problem? No matter how much reading I do, and how much I learn from them, none of them count toward my 40-hour requirement. *sigh* I can’t help it. Really, I don’t do blog surfing for nothing. My daily blog surfing consists mostly of programming topics. Not even a single anime site, really. (That’s saying quite a bit as a fansubber.)

Anyway.

In one of those quest for more self enrichment attempt, I was searching around the web on another topic that I thought would help me – user interface design. Joel on software is a very evil blog to me, in the same sense as how wikipedia is evil for many people – articles are inter-linked with each other, that you can spend hours reading different articles.

So, I’ve wasted 2 hours of my time this morning reading his blogs. I don’t regret it. He has written many things that made me go “ah-ha!” Most of the things are so fundamental, that it’s stupid. But stupidity really is his key note – it’s better to assume that the software users are dumb. We shouldn’t treat them like they’re dumb personally. We always need to pay respect to them. But more dumb we assume they’re when they use the software, it’ll be simpler for everyone to use the software. Great concept. Actually, many people say the same thing, in different words. But still, it is a great reminder how to think like a clueless users, not like a smart programmer. (That’s also one of my frustrations – we don’t have dedicated software testers, unlike other programming shops, who can give us good feedbacks often, and quickly.)

So, I’ve learned a lot, which is…. frustrating. Like I said, none of this counts toward my training hours. I’ve learned so much for free. I don’t want to waste 3 more days on this topic, telling me the same thing. I don’t want to spend $1000 company budget to learn the fundamentals I already know. Not even $20 to buy the book this blog author has written on the topic.

Before I disappear for another 3 months, I want to take a slim chance, and make a request :
If anyone knows of an on-line college/university course I can take, let me know. I’d much rather take a 3-months or 1-semester class than 1-week seminar on any topic. I want the materials taught in it to stick with me for a long time, not just for 3 days after I leave the classroom. My topics of interest right now – effective web design, software development and software project management with some focus on how to use the tools to assist us, software development in team environment, graphic designs with some training in graphics software (photoshop, paint shop pro, etc), extensible and flexible software design (with some emphesis on object orientation and software frameworking topics), and advanced topics on RDBMS – how database works behind the scenes, query optimizations, etc.

I’m not too picky, am I?

86

Thursday, March 9th, 2006

So soon after I ramble about something, another potential solution pops up – The Zend Framework. This looks interesting. Because of its simple design, it seems to have less dependency on libraries and stuff. And it should be fitting in more environment than other frameworks.

But…. eh, it’s a bit too late. Right now, I’m using the combination of the Stupidly Simple MVC Framework and in-hous PHP based template system. I’m still struggling to set things up correctly. I dearly hope that this will be saving me time in the future, because it sure feels like tons and tons of time being wasted now. Bleh the learning curve.

Confused programmer

Friday, February 24th, 2006

Beware – highly geek whining ahead. And it’s rather unorganized.

As a programmer, I’ve hit a huge stumbling block. Actually, it’s not something that happened at once. I’ve been feeling the pain for at least couple years, and I’m getting more and more fed up with the situation. And the worst part – I still haven’t found a way out.

When I started using it in 1999, PHP was somewhat a new language on the web. It’s a language that was made for the web. It did what I needed. It was very easy to learn, especially with my background in C, however rudimentary it was. I’ve built a site with it, and it worked. Not the best, but it worked. But ever since then, I’ve been stumbling on number of problems that these various “why PHP is bad” articles point out.

I think the worst problem I’m facing is that the apparent simplicity of the language is actually the cause of added complexity. I don’t know for sure – I’m just guessing. I don’t have the expertise in other languages like these bloggers. I must be missing something in the area of knowledge in software engineering, and the knowledge of the features that those languages offer.

The sites I manage here at work are getting bigger and bigger. The complexity adds on each time. At first, these sites were rather simple, just like some simple personal sites. I didn’t have code manageability in mind when I started on these sites. Spaghetti codes are everywhere. We’re managing the current sites fine, but I’m not sure how we’ll manage if we have to do a total overhaul of these sites.

I have no intention of abandoning PHP just yet. Despite the weaknesses that PHP has, I still think it’s possible to build a good software with somewhat clean codes with it. There are some major, successful projects built in PHP. Many popular blogging software like wordpress, drupal, b2evolution, etc are written in PHP. New wiki systems pop up quite regularly, many of them written in PHP. Large scales bulletin board systems too. Heck, I use b2evolution, PmWiki, and Simple Machines Forum, all driven by PHP. So I know it can do the job.

But on the sites that don’t rely on these pre-built software, I’m really struggling. First and foremost, the separation of the logic and presentation is not there. I’ve been reading on that topic for quite sometime. I’ve heard about Smarty template engine. I’ve read rants about smarty. I’ve looked at some much smaller template system such as this one. But I’ve never implemented these. And I just left it alone.

Ever since I read this article on slashdot, and learning what this WASP thing is about, the whole issue of separation of logic and presentation came back to me. Actually, it’s a bit more than that. It’s the concept of MVC – Model, View, Control. To me, this thought pattern makes the perfect sense. It does separate the logic and presentation. Not only that, it separates the data access logic from the core business logic. And here it is – WASP – a framework written in PHP that handles the MVC. Perfect.

Or was it? NO. A big no. It assumes I have certain libraries and such that I don’t have. It doesn’t work well forme. And my search for a perfect MVC framework started. Symfony? No. PRADO? No. Cake PHP? This one looked the most promising of all systems I looked in to. I spent about two weeks trying to learn this system. But still, it just isn’t flexible enough.

There is one problem when it comes to these systems written in PHP. Many of them assume that the hosting environment is Unix/Linux based, and is run with Apache web server, and MySQL is used as the database engine. My situation is completely different. I run my PHP site on Windows server, using IIS, and use an obscure database connected via ODBC, as well as IBM DB2. We connect to several others as well. Yes, multiple databases adds more complexity to the system.

Then I came across this series of article, Stupidly Easy MVC in PHP. It’s not a pre-built frame work. It’s a walk through on how you can build your own frame work in simple format. It takes inspiration from the same system that WASP and CakePHP did – Ruby on Rails. Great. I think this might work.

Right now, I’m in the middle of trying to figure this baby out. It still is quite a monster when I try to fit this monster spaghetti code in to this framework. I can no longer slap codes together as my instinct tells me to. I’m struggling hard to just rebuild one application using this simple framework. What I thought was somewhat simple when I coded it isn’t simple at all.

I really lack the proper knowledge of software engineering. I wish I could get some experience in larger software shop, and learn how to work in an organized software project. I want to learn how to manage large scale software projects. I just don’t know where to start. I feel like I’m trying to grab on to whatever piece of straw I can find.

Firefox is an insecure application

Wednesday, March 30th, 2005

That’s a surprise statement coming from me. Various people knows that I am a Firefox enthusiast. Then why am I making this statement?

It goes back to earlier this month, when we received a notice from the IT department.

You have been identified by IT Dept. as running a non-standard browser (firefox Mozilla) on one or more devices assigned to you. IT Dept. has been alerted to vulnerabilities with this application. I have not been able to locate any related requests security review for this application. Please let me know if you can remove this application by end of day. If not please document the business requirements, forward to me (by end of day) and cc: your project leader. IT Dept. will be instructed to implement the patch, and a security review will be performed. Any questions let me know. Thanks

Our response to that is that we need Firefox to keep our current level of productivity. Personally, I use Javascript Console, HTML Validator extension, and Web Developer extension on the daily basis. It’s more than just a damn good web browser to me.

But still, it made me think of this whole issue, and I came up with my own conclusion.

In general, IT department likes to be in control. They control all the computer deployment, including all servers, desktop PC’s, laptops… hardware and software. Microsoft lets the computer maintenance folks power to control the software deployment in centralized manner. Our PC’s are tweaked so we can’t manually modify the registry files. Nor can we use tools like TweakUI. (I think tweakUI is an excellent productivity tool, but we’re out of luck.) And the “Security” setting section of MSIE Options panel is completely locked – they are in control, not us. So, when they need to deploy new software or security rules, they can do it in very organized manner.

Now, try to apply that on Firefox. That’s a completely different story. Firefox lets you control the application. And there are some very well-known extensions and plug-ins to enhance its features. Of course, along comes the possibility of introduction of malwares. Without the proper tweaks made to the application, it’s impossible to control these possibilities, short of enforcing the ban the use of Firefox.

Also, there’s an issue of the aptness in Firefox issues by the support personnel. Are all security folks and PC support groups be able to provide the sound support for Firefox? What if problems occur during the use of Firefox? This question can also lead to the security problem. With inadequate support, more problems will come up faster than the solutions.


With all that said, I still support Firefox. Firefox may be insecure, but IE is even worse. The IT department just can’t see this point.Sure, IE lets them take control of the application settings, but there are still plenty of problems. Currently, our Windows XP doesn’t have SP2 loaded – no pop-up protection. It scares me to go to the internet using IE anymore. I really believe the IT department will save more troubles and money in the long run by making the switch. The cost of training will be made up quickly by the lack of support they have to provide!


By the way, our IT department allowed us the use of Firefox. I guess our business requirement sounded good enough to them. Damn right!P.S. If you think “That’s why Opera is even better!” (yes, that’s you, Ledgem), don’t forget, same security concern of Firefox applies to Opera too.

project management

Thursday, August 26th, 2004

I’m running into a dillemma. I’m starting to handle more and more larger size project, which is still handled mostly by me. And I’m far from having the best programming or project management practice. Recently, I’ve been googling in search of a good tool to put me under good discipline, with no success. What now? Just keep my crappy practice? And let the people who take over these programs suffer? Bleh!

I’ve installed OpenWiki as a means of project documentation, but so far, I’ve had very little motivation to fill it up… Comments in the program source code are very sparse at best. I need something… really, something…