Friday, April 13, 2007

Hal Helms gets it right...

First off, I love long philosophical discussion such as this.

To me this is a sign of realizing that we don't need to be like other programming languages, to be a a solid application language.

And that's what I like, we're here to innovate, drive the market with what is our strength rapid-application development.

Now that does not mean in anyway we can't learn from other languages to improve our programming ideas and methods, but that should not be in an attempt to make us just a clone or copy, we have to stick to what we're about.

If you really want to code in Java, go ahead and do so, just stop trying to make coldfusion into java programming.

I feel we do have a lot to learn as an industry, to improve our training, to create common standards that we all learn from, then as we get more experience, develop our own way's and style's.

To me, I think this is a first good step to common sense, and focusing on what we're about, not trying to mold coldfusion into java which it's not.

Think about it.

Wednesday, March 28, 2007

In pursuit of excellence

The road to this field, can take us from many directions, but in the end it is our own drive to be the best, that gets us there.

For me this road started in 1996, when I worked for a local isp as a tech support person, sadly it was not a very well run isp, but that is what gave me the opportunities for growth I sought.

I worked my way up from Tech Support, to Webmaster, to Hostmaster, and mainly it was because I was bored of just answering calls, trying to solve customer's problems, when my employer didn't care about the customer's just getting them off the phone as soon as possible.

So I started to read about HTML, Javascript, then I heard of coldfusion. I had gotten some training in setting up IIS, but to do actual web programming really intrigued me. I already had made my mark, by taking all our piles of training material, to create a html based step-by-step problem solving intranet.

I am a person who wants change, to desires for things to always improve, and life is not always like that, but sometimes you have to create your own opportunities.

So I started to bug the web design/development department of the isp, asking questions, what's a cfoutput, what's a cfquery...

Playing with access databases, eventually in time working my way up to SQL Server...and over time, my knowledge, skills and experiences kept expanding, but that's not what I want this post to be about.

I think that I had some weird expectations, that I would reach some level of skill/experience, where i could work for a good company that recognized my potential, offered training, and that I would have chances to grow with them.

But that may be the reality for some, but mostly a fantasy...

A lot of us have to work for shlocky companies, that slowly change, don't really care, just do the work, and that can really hurt our desire to do our job, if we're always the janitors of the web.

Which is not what I had signed up for.

For me, I want to be the best, not so much for the recognition of others, but to find something I can do with my life that I am proud of.

Success, Excellence, I feel is really a mental attitude, do you really care about your craft, even when other's don't?

Do you do what's right even if no one else agree's with you?

Can you stand to be alone in a crowd, and stand by what you believe in, even if no one agree's with you?

I've been reading a lot of Jeff Atwood's Coding Horror Blog, and DailyWTF, because they show where we and others screw up in our programming, and perhaps give us clues as to how to improve ourselves...

I think what kind of upset's me now, is a big lack of vision and clarity about where coldfusion is going?

I just don't feel that after this many changes of owners, anyone has a clear vision of what does coldfusion mean, what is it's future, and what is good for both industry and company..

I mean, for me, i focus on the core values of coldfusion programming: performance, documentation, commenting, variables, sql queries, project management.

But i just don't see much discussion on those topics anymore, instead it's what the trends are on, which are cool, but have we as an industry shown that as coldfusion programmer's we've mastered those basic core values?

I don't believe that is so....

Until we're Coldfusion Professional Programmer's, where when people pick both the language and the people to program in it, they will know they will get solid quality, that plans for long term as well as take cares of the short term..

Just my thoughts...

Friday, February 16, 2007

SQL Server Bind Variables

Lately I have been looking for new ways to improve the performance/scalability of my t-sql code. I had remembered that with ORACLE and using cfqueryparam, took advantage of ORACLE's bind variables functionality.

Basically a bind variable, means it treats the queries the same, in terms of performance/explanation plans, even though certain variables are different.

Now while cfqueryparam is always a good practice for preventing sql injection and protecting, I was not aware of how to do bind variables for SQL Server, until now.

sp_executesql

is a very powerful but limited dynamic sql building tool.

execute sp_executesql
N'select * from pubs.dbo.employee where job_lvl = @level',
N'@level tinyint',
@level = 35

Above is an example from http://doc.ddart.net/mssql/sql70/sp_ea-ez_4.htm

Notice how N is in front of each line, that is to force it to be nvarchar, because the stored procedure accepts only nvarchar, even though the fields in your table may just be int, varchar etc.

Secondly this allows 3 parameters

first parameter is the sql query
second parameter is the declaration of any incoming parameters
third parameter is the setting of those parameters

The problem is that if you have multiple incoming parameters, they all have to be declared on one line. The Sql query can be multiple lines but itself consists of the first slot in this stored procedure.

So if you want to not use up memory by caching a query, this is one way to improve performance, by taking advantage of the bind variables, capability.

BTW, if you want more tips on t-sql query optimization, I recommend that you check out this article.

http://www.sql-server-performance.com/transact_sql.asp

Tuesday, January 30, 2007

IE7 Breaks Relative URLS

My own company's site has had huge problems lately because we did not include base href tags at the correct spot in all our code.

How many of you are noticing bad links, bad images, bad forms, that just do not work in IE7.

Especially if you have a page that has search engine friendly url's.

Well in order for those to work you must have the BASE Tag in a specific spot.


BASE Element--Internet Explorer 7 strictly enforces the BASE element rule, as documented in the HTML 4.01 standard. We no longer allow BASE tags outside of the HEAD of the document. The standard specifies that the base element must appear within the head of the document, before any elements that refer to an external source.


Which means every coldfusion page has to have a base href in it. Which can be a tad difficult, if you have different development, production, testing or q&a servers.

It kind of makes me wonder if this was a necessary for IE7 feature. Or if any of you have had other IE7 issues.

Wednesday, January 24, 2007

Communicating your ideas

Rather fascinating post at 37signals, about The Curse of Knowledge. What is interesting, is that it points out that the more you know about a topic, the less likely you are able to communicate it.

And this comes home to me, in the many times, working on projects, and not always able to communicate what I plan to do, what my logic steps are, in a way that others will understand.

People tend to think that having a great idea is enough, and they think the communication part will come naturally. We are in deep denial about the difficulty of getting a thought out of our own heads and into the heads of others. It’s just not true that, “If you think it, it will stick”.


This is so true, because what good is our great ideas, if we can not explain them, communicate them or persuade others that they have value?

What tools or methods do you use to help communicate or persuade your ideas?

Flowcharts, Wireframes, Project Specs?

Friday, January 19, 2007

Tools I love and use

Textpad has to be my number one tool, although I am willing to migrate to a newer text-editor. It just is easy for me to search/replace thru many folders/drivers, regular expressions, macro programming.

Compare-It, is a file comparing tool. Let's say you have a code on development server and code on production, and you need to see what's different. Or I have also used it to compare stored procedures, after saving them as text files. Just a very nice file comparer.

I use Firefox as my web browser, but I use many extensions to help me test code, such as the Web Developer Extension, Extended Statusbar, Firebug to debug javascript errors, IETab to view a new tab as if IE was inside firefox, ServerSwitcher is a great extension that allows you to view a web page on dev or production, then switch back and forth.

I recentally got the Multi-IE Package, that installs multiple versions of IE on your pc, each in it's own folders.

For database querying, I use a great query tool called Advanced Query Tool, I like it because it makes it easier to design, visualize queries, test them, on each database server you have.

I have been playing with this SQL Server Monitoring Tool, called SQL Stripes, which is a freeware/shareware
that provides a powerful console for managing multiple servers running Microsoft SQL Server ™

I also love this trial version of Toad for SQL Server, it has a very powerful, sql tuning component. Basically, you give it a query that you think could be re-written for better performance, and it will try re-writing that query many times, until it has the sql query version, that provides the best solution. I can't yet afford this tool, but it is a very wonderful tool for improving performance of your sql queries.

For FTPing, I use FileZilla, it just is a very easy to use, and open source costs, make it a very nice and powerful ftp client.

There are a lot of nice tools out there, what are your favorites?

Thursday, January 18, 2007

Coding Inside and Out

Steve Jobs really makes sense in this quoted interview on Jeff Atwood's Coding Horror. He really identifies that Microsoft may be great financial company, but their products are third rate. They are third-rate because they have no thought about taste, style or culture in their design process.

And here's Jeff Atwood's comment, that really sinks the hole in one for me.

At Apple, taste and culture are designed into every product from day one. Nothing is released until it looks as good on the outside as it works on the inside.

That is so blindingly true, look at the ipod, maybe it doesn't have every feature that other mp3 players have, but it is so easy to use, and it is so intuitive.

And part of the cause of the not thinking about taste and culture, is short-term thinking.

Here's another comment by Jeff Atwood, that makes this clearer, and I do hope you read his blog posting, it is well worth it.

Jobs is dead on with his criticism. But the problem is much deeper than Microsoft; it extends to the entire PC industry. In the PC world, taste and culture are rarely considered, and if they are, it's always as an afterthought. Ship it first, make it look good later. If you ever do.
Isn't it time for us to wake up smell the roses, see the huge consequences of not caring about the quality of our applications, other than ship it fast, ship it now!

I mean it's obvious that Google has a similar strategy, 37signals.com, all the really good companies, care about the long term.

It's even in 37signals, philosophy, to release fast, but release with less features.

Or like how Google has a very simple page for their front page. which is so attractive in fulfilling our basic needs to search the internet.

Where are the people who really care about their applications, more than just when their creating it, or having to fix some one else's code.

I think I am personally sick to death of always having to fix someone else's code, or that it is so horribly complex and undocumented, that it takes forever to figure out what does what.

I think it's time for us application programmers to take a stand, we're not just monkey's on type-writers, we care for our apps, we want them to be the best, inside and outside.

I mean, they say your just a coldfusion programmer, so that is supposed to mean, don't care about the database, don't care about the design, interface or usability of their apps.

Just create it, and create it now..

And let someone else try to fix what bugs you introduce...

I know I am a tad cynical, but I also have hope, and would love to hear from anyone else who cares too...

Wednesday, January 17, 2007

Do small companies/departments need structure?

This has been a question that has been hitting me home. Some companies think that because they are small, they don't need to spend any time or energy being organized/structured.

By structured/organized technically I mean:

1. Bug Tracking System - That helps developers kill all bugs, which incites them to create less bugs.

2. Project Management System - can be excel, notepad, anything that helps developers manage their time, and managers set priorities, due dates and manage that.

3. Documentation of Code Logic/Business Rules - So that if lead developer dies, and he/she had it all in their head, how in the world would the next lead developer figure out the code/logic and business rules?

4. Common Coding Styles - Including page naming, commenting, indenting. And have this written to train new members, and remind old.

5. Set, Record and aim for Technical Goals not related to specific projects but affect overall success of developers. IT Architecture, Scalability, Updating ColdFusion, Updating databases, Security, etc. Do you just create more code, or do you also work on improving the environmment, universe the code resides?


Maybe the size of the company can dictate the complexity or depth you go to provide solutions to your main needs, but to not provide them sounds like something that should be on the DailyWTF.com

How do you explain the importance of organization/structure to those who think small companies don't need them?