| NASA
Software Engineering Laboratory |
| A list of software engineering documents derived from over 20
years of software development practice at NASA. Here are the ones i
found most useful:
-Recommended Approach to Software Development PDF
-Manager's Handbook for Software Development PDF
-Software Process Improvement Guide PDF
PS: These methods are an insight into how to manage a very big
project. For smaller projects, many of these details are bureaucracy
and are not needed. I found the requirements and planning parts
particularly useful as it has several checklists on things to
consider...
Discuss (2
responses) (Join
/ Login first) Edit
permalink: #
|
| Bending over
backwards with PDF and RTF |
| I will be pretty busy for the next few weeks. Don't know how
frequently I will be posting. Doing heavy software development work,
building the next generation of our workflow software. Anyway here's
a little titbit about how we generate documents dynamically in our
workflow system...
There appear to be tons of PHP libraries out there that generate
PDF, presumably for creating reports and form letters. However I
don't think PDF is a very programmer-friendly format. You have to
bend over backwards to do anything nice with PDF. Page-sizes are
hard-coded. Doing word-wrap, calculating page sizes is a pain.
I believe a much more flexible method of generating reports is
Rich Text Format (RTF), a text markup format used by word
processors. Documents formatted in RTF will do all the hard work of
calculating word-wrap, page sizes, the amount of text to fit in a
table, headers and footers for you. And because all modern word
processors support RTF, its as ubiquitous as PDF.
Vadim Paggard has a nice
commercial PHP RTF library that we bought over a year ago. You
write pseudo-HTML markup, and it converts it to pretty nice RTF.
And RTF is extremely flexible. If your end-users have existing
standard form letters that they want generated dynamically with PHP
for download, then save the form letter in RTF format. As RTF is a
text markup format, it becomes trivial to write a macro-substitution
program to search for all variable fields in the RTF letter.
For the example below, the variables {$ADDRESS}, {$NAME} and
{$REASON} can be macro-substituted with a simple RTF parser: {$ADDRESS}
Dear {$NAME},
Thank your for your request to {$REASON}...
The only real limitation to RTF is that it is not a read-only
format. But for most uses, you can bend
it like Beckham.
RTF
specification.
Discuss (2
responses) (Join
/ Login first) Edit
permalink: #
|
| Inheritance
Considered Harmful (PDF) |
| It could also be argued that inheritance falls into the class
of programming language features which are accepted and instigated
without thorough analysis, only to be subsequently rejected when
experience has shown them to be unhelpful. It would appear that
encapsulation is more relevant and applicable than inheritance, and
its benefits to the maintenance process are more obvious. In [12],
it is suggested that in future systems, architectures based on
aggregation will be more appropriate than those based on
inheritance. This is particularly true of systems incorporating
multiple inheritance whose structures have tended to be elaborately
concocted... Lastly, contrary to what was originally thought, it may
be that most OO systems are simply not amenable to the use of
inheritance, and their functionality does not lend itself well to
use of inheritance. -- Rachel Harrison and Steve Counsell
Not an easy article to read, but basicly it's saying
complex inheritance trees (more than 3 levels in depth?) are
difficult to maintain, and many designs use inheritance
inappropriately. That is why the big thing in C# and Java today is
generics,
and why I was such a fan of templates in C++, even if the syntax was
terrible. PHP has less need for generics because most of its
operators and functions are polymorphic (thx to dynamic typing). See
also Objects Have
Failed.
Discuss (Join / Login first) Edit
permalink: #
|
| Objects
have Failed: A debate between Gabriel and Steele
|
| This debate was held at OOPSLA 2002. Both are well known for
their work on Common Lisp. Guy Steele is currently Mr Java Spec at
Sun, while Richard Gabriel is researching next generation systems
for Sun.
Objects, as envisioned by the designers of languages like
Smalltalk and Actors—long before C++ and Java came around— were for
modeling and building complex, dynamic worlds. Programming
environments for languages like Smalltalk were written in those
languages and were extensible by developers. Because the philosophy
of dynamic change was part of the post-Simula OO worldview,
languages and environments of that era were highly dynamic.
But with C++ and Java, the dynamic thinking fostered by
object-oriented languages was nearly fatally assaulted by the
theology of static thinking inherited from our mathematical heritage
and the assumptions built into our views of computing by Charles
Babbage whose factory-building worldview was dominated by
omniscience and omnipotence.
And as a result we find that object-oriented languages have
succumb to static thinkers who worship perfect planning over runtime
adaptability, early decisions over late ones, and the wisdom of
compilers over the cleverness of failure detection and repair.
-- Richard Gabriel
Counterpoint by Guy
Steele
The debate
notes (pdf) contain a long list of interesting ideas and
thoughts on object technology. Also see Inheritance
Considered Harmful.
Discuss (2
responses) (Join
/ Login first) Edit
permalink: #
|
| Enemies
of Usability |
| It's easy for an individual to spot usability problems, but
it's often impossible for an individual to solve those problems. In
fact, in most organizations, the design of usable information
systems requires collaboration across teams, departments and
disciplines.
These collaborations are notoriously messy. Perhaps our tribal
heritage underlies our fear of difference. Perhaps organizations
fail to align goals and incentives across groups. Perhaps we
secretly enjoy being difficult. -- Peter Morville
Discuss (Join / Login first) Edit
permalink: #
|
| Software,
Jim, but not as we know it |
| As we boldy explore the new universe of service-oriented
architectures, we should not be surprised if software begins to
assume unfamiliar, alien forms. Here are some of the unusual
phenomena to look out for when plotting a course for your enterprise
-- Phil Wainewright
Discuss (Join / Login first) Edit
permalink: #
|
| PHP
Architect's new year present - Jan 2003 issue is FREE
|
| To celebrate the success of their launch, they are giving away
the January 2003 issue of php|architect for free!
php|architect is a monthly magazine dedicated to PHP
Professionals. It's published in PDF format and available worldwide.
In the second issue:
- Theo Spears: Writing Secure PHP Code - Jayesh
Jain: Using the .NET Assembly with PHP - Marco
Tabini: Writing A Web-based PDF Viewer
Plus, articles on creating your own Full-Text Search with MySQL,
accessing the Win32 API, implementing database persistence layers in
PHP, tips & tricks, and much more!
Discuss (Join / Login first) Edit
permalink: #
|
| Google
Zeitgeist |
| The term "zeitgeist" comes from the German "Zeit" meaning
"time" and "Geist" meaning "spirit". The term is defined in English
by Merriam-Webster's Collegiate® Dictionary as "the general
intellectual, moral, and cultural climate of an era." Google
believes that this word and its definition appropriate to describe
the program it implemented to share global search statistics and
trends from the world's most popular search engine.
A new word to impress my friends with...if only i knew how to pronounce
it :-)
Discuss (3
responses) (Join
/ Login first) Edit
permalink: #
|
| PHP 4.3.0 Release
Announcement |
|
After a long and arduous 8 months of development and testing, PHP
4.3.0 is out! With regard
to scope, time, and effort, this is the largest 4.x release of PHP,
and it further elevates PHP's standing as a serious contender in the
general purpose scripting language arena.
Command line interface
This version finalizes the separate command line interface (CLI)
that can be used for developing shell and desktop applications (with
PHP-GTK). The CLI is always built,
but installed automatically only if CGI version is disabled via
--disable-cgi switch during configuration. Alternatively, one can
use make install-cli target. On Windows CLI can be found in
cli folder.
CLI has a number of differences compared to other server APIs.
More information can be found here:
Streams
A very important "under the hood" feature is the streams API. It
introduces a unified approach to the handling of files, pipes,
sockets, and other I/O resources in the PHP core and extensions.
What this means for users is that any I/O function that works
with streams (and that is almost all of them) can access built-in
protocols, such as HTTP/HTTPS and FTP/FTPS, as well as custom
protocols registered from PHP scripts. For more information please
see:
New build system
This iteration of the build system, among other things, replaces
the slow recursive make with one global Makefile and eases the
integration of proper dependencies. Automake is only needed for its
aclocal tool. The build process is now more portable and less
resource-consuming.
Improvements
PHP 4.3.0 has many improvements and enhancements:
- GD library is now bundled with the distribution and it is
recommended to always use the bundled version
- vpopmail and cybermut extensions are moved to PECL
- several deprecated extensions (aspell, ccvs, cybercash, icap)
and SAPIs (fastcgi, fhttpd) are removed
- speed improvements in a variety of string functions
- Apache2 filter is improved, but is still considered
experimental (use with PHP in prefork and not worker (thread)
model since many extensions based on external libraries are not
thread safe)
- various security fixes (imap, mysql, mcrypt, file upload, gd,
etc)
- new SAPI for embedding PHP in other applications
(experimental)
- much better test suite
- significant improvements in dba, gd, pcntl, sybase, and xslt
extensions
- debug_backtrace() should help with debugging
- error messages now contain URLs linking to pages describing
the error or function in question
- Zend Engine has some fixes and minor performance enhancements
- and TONS of other fixes, updates, new functions, etc
For the full list of changes in PHP 4.3.0, see the ChangeLog file.
Discuss (Join / Login first) Edit
permalink: #
|
| Seminar on
The Future of PHP 5 and the Zend Engine 2 |
| Michal asked me to post this about their iSeminars. These look
really cool because you can talk interactively in the seminar. And
there are transcripts of previous sessions too. Unfortunately the
last time i tried it, the packets couldn't get through my firewall -
bummer...
Date: January 8, 2002
Zeev Suraski, one of the designers of PHP, gives an overview
of the new language-level features developed in the Zend Engine 2,
and the way they address the limitations of Zend Engine 1 in PHP 4
including:
· New object oriented model · Integration with external object
oriented models, such as COM and Java · Exception handling ·
Stack tracing
Discuss (Join / Login first) Edit
permalink: #
|
| what i want for
christmas |
| the fedex guy pulled up, so exciting, then he walked to the
next house with a ll bean package, rats, but then he came over and
said "i have a big package for you" oh muh gawd...
Merry Christmas and a Happy New Year. Spend some time with
the ones you love. Postings will continue next year!
Discuss (Join / Login first) Edit
permalink: #
|
| Top Ten Web-Design
Mistakes of 2002 |
| Every year brings new mistakes. In 2002, several of the worst
mistakes in Web design related to poor email integration. The number
one mistake, however, was lack of pricing information, followed by
overly literal search engines -- Jakob "The Man" Nielsen
Discuss (Join / Login first) Edit
permalink: #
|
| Software,
Jim, but not as we know it |
| As we boldy explore the new universe of service-oriented
architectures, we should not be surprised if software begins to
assume unfamiliar, alien forms. Here are some of the unusual
phenomena to look out for when plotting a course for your enterprise
-- Phil Wainewright
Discuss (Join / Login first) Edit
permalink: #
|
| Comparing
C, C++, Java, Perl, Python, Rexx, and TCL (pdf)
|
| Google
HTML version. The key conclusions of the research paper are
- Designing and writing the program in Perl, Python, Rexx, or
Tcl takes no more than half as much time as writing it in C, C++, or
Java and the resulting program is only half as long.
– No unambiguous differences in program reliability between the
language groups were observed.
– The typical memory consumption of a script program is about
twice that of a C or C++ program. For Java it is another factor of
two higher.
– For the initialization phase of the phonecode program (reading
the 1 MB dictionary file and creating the 70kentry internal data
structure), the C and C++ programs have a strong run time advantage
of about factor 3 to 4 compared to Java and about 5 to 10 compared
to the script languages.
– For the main phase of the phonecode program (search through the
internal data structure), the advantage in run time of C or C++
versus Java is only about factor 2 and the script programs even tend
to be faster than the Java programs.
There is also an interesting
debate at Lambda the Ultimate on my previous Developing Reliable
Software with Scripting Languages essay.
Some people have got the impression the Developing Reliable
Software essay advocates scripting languages as the best way to
write software. That's simply silly - some things can only be done
in a 3GL due to their better performance characteristics. All that
was written was "This seems to be a pretty good justification for
using scripting languages." Whether the justification fits the
problem domain is up to you of course.
Also I am more interested in finding ways to make coding
scripting languages more reliable, and not proving that they can be
reliable. I am not interested in proving whether Python is more
reliable than PHP or C# or vice versa. I just want our code to suck
less.
Lastly the reason (which was never elaborated) why scripting
is the now and future of computing is because the
price/performance ratio of computers is still dramatically going
down. The 68000 assembler that I wrote for the Macintosh in the 80's
that I (hopefully) thought was highly tuned runs slower than the
slowest Perl code I could write today. More and more problems over
time have become amenable to the use of specialised domain specific
scripting languages. One non-PHP example being the numerical
processing now done using Python
and MatLab.
Discuss (Join / Login first) Edit
permalink: #
|
| Why JSP Sucks So
Hard |
| once again my UI engineers will be taking perfectly good HTML
written in Dreamweaver and tearing it apart, throwing out some of it
and rewriting other parts of it, just to make it work with the JSP
they're writing. Once they're done, the HTML author will have
absolutely no clue what the page does any more, and will have no
desire or ability to edit it. When we insist that no really we need
this redesigned, we'll spend twice as long doing it (doubling our
costs, negative ROI, bad technology choice, yadda yadda yadda) since
the HTML author will need that long to write in sample data and then
have the JSP author tear it out again. -- Marc Hedlund
Is Adam Bosworth saying the
same thing?
Discuss (Join / Login first) Edit
permalink: #
|
| Interview
with Maryam Mohit, VP Site Development, Amazon |
| Q: What's Amazon.com's "secret sauce," the secret of your
success?
I wish I knew. I do think that the relentless focus on creating a
great experience has to be part of it. It's not just a great
experience on the website, because we think about it as a 360 degree
experience, which includes what happens after you click to order.
What's the experience of waiting for the order to arrive, of getting
the box, what happens if something goes wrong? Each of those is part
of the customer experience.
Discuss (Join / Login first) Edit
permalink: #
|
| Tim
Perdue Interview (PHPBuilder & SourceForge
founder) |
| A little bit of background. As the rest of the company
imploded, we had a lot of those people come over and all of a sudden
they cast themselves as the "experts" on everything from building a
great development platform to running the development process. And
of course, I didn't know shit from shinola, which I always found
rather amazing since I built much of what they were fighting
over.
Thanks to Keith Devens for the
link.
Discuss (Join / Login first) Edit
permalink: #
|
| The PHP Sharp
Research Project |
| Alan Knowles just posted on php.dev that he is starting to
develop a PHP compiler for the CIL (.net bytecode). Anyone looking
to develop a commercial PHP# compiler? Alan's for hire...
Discuss (Join / Login first) Edit
permalink: #
|
| You gotta love a guy
who puts his life on his weblog |
| The latest episode to Russell's life is that in his new job,
he's moving back to the States from Spain.
All my software on my laptop is paid for. Spain doesn't put a
lot of weight on paying for their software.
Everyone has a desk and a phone. The Spanish normally share their
phones - especially developers who are treated like shit and given
no respect whatsoever.
Airport Security: I was anal probed at the airport. Somehow I
beeped as I passed through the machine and ended up going through a
5 minute routine which included taking off my shoes (to be x-rayed
again), holding up my legs like a high-kicker, taking off my belt,
folding down my pants, etc. Additionally, some lady dropped her
scarf as she was walking down the concourse and some airport guy
comes running up behind her (passing the scarf on-route) telling her
she dropped her scarf, and escorted her back to pick up the scarf,
walkie-talkie by his face ready to call in the big-guns if this
scarf turns into some sort of James Bondesque blast-o-scarf...
Fucking ridiculous. And this is in Seattle.
Discuss (Join / Login first) Edit
permalink: #
|
| Harald
Radi: Multi-Tier Web Applications |
| PHP is attractive as a language because of its simplicity and
ease of learning, in return PHP lacks important features needed for
building complex web applications. These are mostly required when
following the multi-tier pattern to achieve a separation of
presentation, logic and data storage and to reuse already existing
interfaces of your information system. Because of its
straightforwardness PHP is best suited for building the presentation
layer of a web application. The extensions bundled with PHP enable
you to integrate existing components that are available as Java
classes, CORBA- and (D)COM components or .NET assemblies. Another
advantage is that most of these component models already provide
various frameworks for transactions and messaging between processes
and furthermore message queuing if these processes are not running
at the same time. Efficient process communication can therefore be
realised with very little effort.
There's a little bit of history to this article. Harald
was one of the writers who was going to contribute a chapter to a
book i was writing. For reasons beyond my control, the book got
cancelled. It looks like a lot of what he wrote is inside this
article. It's a pity that the book was cancelled because most of the
book was written to this article's standard. Harald also converted
this article into a set of slides
for a conference. The slides are much more readable.
Thx to PHPDeveloper
for the link.
Discuss (5
responses) (Join
/ Login first) Edit
permalink: #
|
| Piracy is Progressive
Taxation |
| For all of these creative artists, most laboring in obscurity,
being well-enough known to be pirated would be a crowning
achievement. Piracy is a kind of progressive taxation, which may
shave a few percentage points off the sales of well-known artists
(and I say "may" because even that point is not proven), in exchange
for massive benefits to the far greater number for whom exposure may
lead to increased revenues.
Our current distribution systems for books, music, and movies are
skewed heavily in favor of the "haves" against the "have nots." A
few high-profile products receive the bulk of the promotional budget
and are distributed in large quantities; the majority depend, in the
words of Tennessee Williams' character Blanche DuBois, "on the
kindness of strangers."
Lowering the barriers to entry in distribution, and the
continuous availability of the entire catalog rather than just the
most popular works, is good for artists, since it gives them a
chance to build their own reputation and visibility, working with
entrepreneurs of the new medium who will be the publishers and
distributors of tomorrow. -- Tim O'Reilly
Discuss (Join / Login first) Edit
permalink: #
|
| Few Good
Solutions have the Luxury of Staying Simple |
| There are two ways of constructing a software design. One way
is to make it so simple that there are obviously no deficiencies.
And the other way is to make it so complicated that there are no
obvious deficiencies. --C.A.R. Hoare
Before commenting on this quotation, I was in full agreement with
Professor Hoare. However after some reflection, I now believe that
this quotation is misleading. I do not think that the defining
characteristic of a successful design is simplicity anymore -- it is
adaptability.
I have 3 examples to illustrate my point.
First is Microsoft's Windows NT. Novell had at one time the best
PC file server on the market. It had the dominant market share. It
had a robust and simple architecture tuned only for file-serving and
it did it very well. Then Windows NT came along. NT was slower and
not as reliable as a Novell server. But because NT was more
adaptable and improved more and more, it became the numero uno PC
server.
Second is the Linux monolithic kernel. Many academics condemned
Linux in its early days because its monolithic kernel was inferior
and more "complicated" than the microkernel. Today most modern
operating systems do not use a microkernel - and this old debate
over "simplicity" is irrelevant. Moshe Bar recently benchmarked a
real microkernel OS (MacOS X) against Linux running on the same
hardware. Linux won easily.
The Intel 8086 instruction set is my last example. True it's not
a pure software example, but it's apt. Anyone who has studied 8086
assembler and compared it to its contemporary, the Motorola 68000,
knows that the Intel chip was an ugly duckling. But of course we
know who won this battle. Then came the RISC chips that promised
infinite scalability (compared to Intel) because of its superior,
simpler technology. Intel did such a good job improving the chip
that many
people still do not believe Intel when it says that we should
upgrade to Itanium.
Of course simplicity is still a good goal, but these examples
show in today's complicated world, few good solutions have the
luxury of staying simple.
Discuss (Join / Login first) Edit
permalink: #
|
| Smacked
by PHP Traveller |
| Finally, pay attention to the fourth paragraph of this
article where the author describes why he is against the MVC
architecture. Now, MVC is *not* meant to help you with viewing
permissions. The author doesn't know that but that is not stopping
him from speaking against "Smalltalk consultants turned Java
advocates". It is important to note here that I do not think
everyone should know MVC. What I object against is people not being
humble.
Well i have criticized others in the past, so i don't expect
anything less than a good smack like this when i get things wrong!
Fixed.
New Damn
the torpedoes! Full speed ahead!
I get a lot of negative energy reading the responses to this
post. Phhhhhtttttt! Make that two farts! Then breathe in your own
shit :-)
When you write or release open source code, there will be bugs.
When you make comments or post articles, you will make mistakes. If
you write enough articles you give people plenty of ammunition.
People will point out your errors - that's normal - after all, I
will point out yours.
Fixing bugs is no big deal. It's your dreams and what you build that
matters.
Discuss (4
responses) (Join
/ Login first) Edit
permalink: #
|
| Golden
Rules for optimizing your PHP pages |
| PHP invites beginners to insert complicated scripts and
database queries in their sites, while possessing only superficial
knowledge of how the internet runs. I often read this and think of
my own web experience: I felt that I was able to create anything
(because I believe that you can materialize ANYTHING if you are
creative, determined and patient enough) but I was not a good PHP
builder.
So I began to read manuals, magazines and PHP forums around the
web in search of background information. How could I optimize my
portal? It began to get heavier from week to week with my new
features based on queries that made my sites slower and slower
(maybe not for those on ADSL, but at any rate I started to get the
feeling that things could be optimized by applying some golden
rules). -- Marion Weerning
In an unrelated item, Zend is having a free
seminar. It will discuss the issues of intellectual property
protection, and highlight the business and technical benefits that
Zend SafeGuard Suite offers.
Discuss (Join / Login first) Edit
permalink: #
|
| Design
Pattern Snobs |
| Have you noticed lately how the word pattern seems to be
creeping into general musings and dialogue more and more? Like
name-dropping, it's consciously woven into the fabric of the
conversation as a way to assert a certain level of understanding and
credibility. Mention the latest design pattern and suddenly your
peers will see you as a genius of software engineering, "...you see
I have employed the Decorator pattern for this particular class..."
While you're fighting the urge to give them a good slap, allow me to
let you into the big secret. There is none! -- Alan Williamson
Alan is correct in saying that patterns have produced a
lot of jargon and people misuse patterns all the time; unfortunately
calling patterns "data structures" suggests he doesn't know what
he's complaining about. Ted Neward has a good counterpoint.
Discuss (Join / Login first) Edit
permalink: #
|
| Quote of the
Day |
Q: How many software programmers does it take to change a
lightbulb ? A: It can't be done; it's a hardware problem.
Discuss (Join / Login first) Edit
permalink: #
|
| Design
Really Matters |
| When it comes to design, most folks have one of three common
attitudes. The first is, "Yes, design is vital to accurately
communicate our brand." They pony up the bucks and pay professional
designers for their talent and ideas.
Others say, "Heck, it's technology that matters. We'll have our
in-house designers put a pretty face on it." They create development
budgets to match their priorities.
The third contingent is convinced information is more important
than looks. "What matters is what we say. We don't want all that
graphic stuff to get in the way of our copy." They go with a spare,
Jakob Nielsen-like approach that emphasizes text with a Wall Street
Journal-like look.
They're all wrong. -- Sean Carton
Discuss (1
response) (Join /
Login first) Edit
permalink: #
|
| Phrame |
| Phrame encourages application architectures based on the
"Model2" approach, a variation of the classic Model-View-Controller
(MVC) design paradigm. Phrame provides its own Controller component
and integrates with other technologies to provide the Model and the
View. For the Model, Phrame can interact with any standard data
access technology, including Pear DB/DataObjects, and ADODB. For the
View, Phrame works well with PHP, Smarty Templates, XSLT, Flash MX,
and other presentation systems.
Phrame provides an extensible development environment for your
application, based on published standards and proven design
patterns. Phrame is sponsored by the Software Development department
of Texas Tech University and is released under the GPL
This set of classes looks really nice if you use
the MVC model. But a word of advice: chefs say one of the hallmarks
of good cooking is that the natural flavours of the ingredients
should be retained, and not disguised; it seems silly to make roast
beef taste like chicken. Similarly, when using PHP, we should be
using natural built-in PHP constructs. The designers rejected the
more idiomatic foreach loop and PHP arrays, and decided to reinvent
the wheel in their HashMap (just a hashed array), ListIterator
(foreach) and ArrayList (array), Stack (use array_pop and array_push
instead) classes. Can't get that taste of Java outa my mouth.
Discuss (1
response) (Join /
Login first) Edit
permalink: #
|
| First English PHP Magazine
Out |
| php|architect is the monthly magazine dedicated to PHP
Professionals. It's published in PDF Format and available worldwide.
In the first issue:
Zeev Suraski/Brad Young: Performance Management
Opportunities
Harrie Hazewinkel: SNMP Management with PHP
Marco Tabini: Console scripting with the nCurses
bindings
Plus, articles on creating your own webmail system, distilling
PDF files for free, writing a database independent abstraction
layer, tips & tricks, and much more!
Discuss (2
responses) (Join
/ Login first) Edit
permalink: #
|
| Quote of the
Day |
| You can either have software quality or you can have pointer
arithmetic, but you cannot have both at the same time. -- Bertrand
Meyer
Discuss (2
responses) (Join
/ Login first) Edit
permalink: #
|
| Understanding
the Importance of Release Early, Release Often |
| What Often Happens when Commercial Source Developers "Go
Open"
This is a pretty common tenet in the Open Source world and where
commercial developers often go wrong. If you are an ex-commercial
developer then you want desperately to reach a "1.0" stage or a
"near functional", "mostly baked" stage before going live. You
wouldn't want to release something piece meal, would you? After all
-- that's the way it's done. -- Scott Johnson
Discuss (Join / Login first) Edit
permalink: #
|
| A
Programmer visits China |
| I recently married a nice Chinese girl. We then travelled to
China, partly to visit her family and friends, but also to do some
sight-seeing, and to be tourists for a few weeks. This article sums
up my experiences during this trip. -- Dino Fancellu
I just visited China and read this with interest. Have a
look at the responses - some really weird people went ballistic over
his frank (and funny) comments.
Discuss (Join / Login first) Edit
permalink: #
|
| Internationalization
and Localization with PHP |
| While everyone who programs in PHP has to learn some English
eventually to get a handle on its function names and language
constructs, PHP can create applications in just about any human
language. Some applications need to be used by speakers of many
different languages. PHP's internationalization and localization
support makes it easier to make an application written for French
speakers useful for German speakers. -- Adam Trachtenberg
Discuss (Join / Login first) Edit
permalink: #
|
| Tip of the
Day |
| There are two ways of constructing a software design. One way is
to make it so simple that there are obviously no deficiencies. And
the other way is to make it so complicated that there are no obvious
deficiencies. --C.A.R. Hoare
Discuss (Join / Login first) Edit
permalink: #
|
| Flash and
Web-Based Applications |
| The Internet is changing. Although people have primarily used
it to read email and Web pages, more functionality-oriented
applications are now emerging, with the goal of providing new
features that do more for users. Developers are creating many of
these applications using Macromedia Flash, because traditional Web
pages are better suited to what they were invented for -- reading
articles -- than to the new goal of manipulating data objects.
This possibility [of using Flash] sounds good. However, in the
usability field, we've learned that more technical capabilities and
a broader set of design options usually translate into more rope for
hanging the users. Designers almost always use new features to
excess, and it takes some time to discover the most appropriate way
of applying new technology to suit human needs. -- Jakob "I told
you so" Nielsen
Discuss (Join / Login first) Edit
permalink: #
|
| The
Object-Oriented Evolution of PHP |
| Few people know this, but when PHP as we know it today was
being molded, back in the summer of 1997, there were no plans for it
to have any object-oriented capabilities. Andi Gutmans and I were
working to create a powerful, robust and efficient Web language
loosely based on the PHP/FI 2.0 and C syntax. As a matter of fact,
we got pretty far without having any notion of classes or objects—it
was to be a purely structured language. However, on August 27th of
that year, PHP's object capabilities changed.
When classes were introduced to the code base of what was to
become PHP 3.0, they were added as syntactic sugar for accessing
collections. PHP already had the notion of associative array
collections, and the new classes were nothing but a neat new way of
accessing them. However, as time has proven, this new syntax proved
to have a much more far-reaching effect on PHP than was originally
intended. -- Zeev Suraski
Discuss (Join / Login first) Edit
permalink: #
|
| I have a
Nigerian Investment Scheme for You... |
| As usual, lots of disinformation out there. Just read an article
at Zend that suggests storing your login id in cookies as an
authentication mechanism! Of course this is bad -- just find out his
userid, and place a cookie with the userid on your browser and you
have stolen his identity. Then there was an article at phpcomplete
that suggests that using objects is substantially faster than
associative arrays. As objects are implemented as associative arrays
internally, that sounded fishy. A bit of testing revealed there were
bugs in their benchmarks.
In my opinion, the best thing to do with such articles is to
quietly delete them. They do more harm then good. Now for all of you
people who don't agree with me, I have a plan to export Nigerian
goods that will make us tons of money...
Discuss (6
responses) (Join
/ Login first) Edit
permalink: #
|
| Replacing
Perl Scripts with PHP Scripts |
| With the introduction of version 4.2, PHP has started
supporting a new SAPI (Server Application Programming Interface)
called CLI (Command Line Interface). This facility was introduced to
help developers create small shell applications (scripts) with PHP.
So, now you can kiss Perl goodbye forever. -- Jayesh Jain
Hear hear. Thanks to my influence, other developers at Natsoft
are using PHP for their batch scripts too. Hmm maybe it is because
they report to me...
Discuss (2
responses) (Join
/ Login first) Edit
permalink: #
|
| Zope
versus Cocoon |
| Evaluating a Content Management System or Portal Solution? This
excellent survey gives you a better idea of what to look for. It
compares Zope, a CMS written in Python, with Cocoon, a Java
framework.
I must say that most PHP systems such as PHP-Nuke or Post-Nuke still cannot compare with
Zope, although they are improving. The only one that comes close
AFAIK is EZ Publish. Midgard is another one
that's supposed to be very good, but I've never figured how to
install it (remember I am only a generalist).
Discuss (Join / Login first) Edit
permalink: #
|
| Interview - Bård
Farstad of eZ systems |
| Bård Farstad is the lead developer at eZ systems, the company
behind eZ publish. As a PHP developer from a C++ background, he's
pretty much done all there is to do with PHP. For this 25 year old
programmer from Skien, Norway, coordinating an international
development team and turning an Open Source software project into an
enterprise-level commercial success was just a matter of adjusting
his stride. Aside from the computer keyboard he's also a master of
the guitar fret board. Ask him nicely and he might send you his
band's latest single on mp3...
Discuss (Join / Login first) Edit
permalink: #
|
| Book
Review: Beginning PHP4 Databases |
| Many people think that i'm some kind of database guru because i
wrote a popular database abstraction library. Well you want to know
a secret... I'm not an expert of databases, i just muddle my way
through MySQL, i could never figure out how to compile PostgreSQL on
Windows, I don't know so many things.
I'm actually a generalist. I can code a bit in Javascript, I know
some C++, PHP and a thousand other useless languages. A generalist
is pretty good thing to be in technology, because computers and
software changes so fast and if you spend too much time specializing
you're already a dinosaur before you turn 40.
So what has this got to do with the book Beginning PHP4
Databases? Well it turns out that this book (sent to me by Wrox)
appears to be for beginners but is actually meant for a different
audience, people like me: generalists. In typical Wrox fashion, we
get an army of smart programmers to write about their fields of
expertise. The may know their databases, but the writing is a bit
too technical for real beginners.
I still liked the book, and it took me a couple of days to
realize why. The book is actually an overview of different database
technologies, including relational databases, XML databases and
object-relational ones. The book goes into some technical depth on
each type of database, shows you how to model and normalize
databases, and has examples using the native database api's and PEAR
DB, shows us how to interface to Xindice (an XML database), and use
the object-relational stuff in PostgreSQL. You get to learn a lot
about databases you might never use!
Conclusion: The book has decent content covering many
database topics, but is more like a collection of essays on
different databases than a cohesive whole. In other words the book
has all the advantages and defects of the Wrox team of authors
approach. The book is good value if you are someone interested in
database technology and want to learn more about what's available
today for PHP.
Discuss (Join / Login first) Edit
permalink: #
|
| Michael
Radwin blogs ApacheCon |
| Watching the Alpha Geeks: Tim O'Reilly gave this
morning's keynote address. (Actually, what's bizarre is that he's
actually giving the keynote address right now and I'm blogging via
an 802.11b WLAN.)
O'Reilly spoke about early adopters being a good predictor for
technology trends. He compared the models of Napster and MP3.com
(distributed vs. client-server models) and how it often takes
someone to look at technology in a completely different way in order
to make progress -- cheap local storage and always-on networking are
changing the computing landscape. He says the killer apps of today
are all network applications: web, mail, chat, music sharing.
The best laugh came at the moment when he said that he thinks the
phrase "Paradigm Shift" gets overused so much that it is starting to
generate groans the way the phrase "The Knights Who Say Nee!" has
done for years
Thx to Jeremy
Zawodny for the link.
Discuss (Join / Login first) Edit
permalink: #
|
| Intranet Usability:
The Trillion-Dollar Question |
| Poor search was the greatest single cause of reduced
usability across intranets we have seen, aside from the general lack
of executive support and budget. Search usability accounted for an
estimated 43% of the difference in employee productivity between
intranets with high and low usability. -- Jakob Nielsen
Discuss (Join / Login first) Edit
permalink: #
|
| Comparing
Python to Java |
| Java was designed to be an incremental step up from C++, with
the rationale that for the price of a small bit of efficiency, you
gained a huge amount in terms of simplicity, ease of development,
maintainability, and portability. Python on the other hand "turns
all the knobs to 10." It offers a beautifully simple, clean design
that can result in programs that are extremely clear, easy to
maintain and very quick to develop.
In my mind, what is true of Python holds true for PHP
also. Furthermore I can train a C or Javascript programmer to code
in proficiently PHP in 2 days. I cannot say the same for Python.
Python enjoys a certain intellectual cachet among the digerati, but
I think PHP is the better language, especially when PHP's support
for threads and unicode is fixed.
Discuss (3
responses) (Join
/ Login first) Edit
permalink: #
|
| New
features of C#: Generics and Iterators (Word doc)
|
| An interesting presentation for language geeks.
I'm a fan of templates (generics). When I was using C++, STL was
a big plus-plus for me. The question arises - does PHP need
templates? I don't think so because PHP's data is loosely typed. It
couldn't care less if the data was about strings or potato fritters.
What is required though for effective template usage in PHP is some
standard conventions for object naming and object reflection.
And does PHP need iterators? Not if you dump your potato fitter
objects into an array - PHP's type-less array structure provides a
natural format to loop over.
There is one use of iterators that could be useful and isn't
available now - iterating through a data structure that's larger
than can fit into memory. But provided we don't expect PHP to do
everything, we could let the database do the processing for us.
That's what databases are good for. Munching through tons of banana
and potato fritter data.
Techie Glossary: What are templates? code templates that
can handle different data types gracefully, eg a list or tree class.
And iterators? That's a foreach loop going through a collection of
data/records.
Thanks to Andrew
Stopford for the link.
Discuss (Join / Login first) Edit
permalink: #
|
| Comparing PEAR
DB to ADOdb |
|
PEAR DB is the default
database abstraction library for PEAR. ADOdb is a high end database
abstraction library modelled on Microsoft's ADO that is also very
popular.
1. Feature Comparison Where we try to put you to sleep
by showing you the similarities between PEAR DB and ADOdb
2. Features Missing from PEAR DB Now we try to wake you
up with some teasers
3. Criticisms of ADOdb Read what other people are
moaning and complaining about
Discuss (3
responses) (Join
/ Login first) Edit
permalink: #
|
| Jean
Paoli (co-creator of XML) on XML in Office 11 |
| Our goal is to enable end-users to use XML properly. The
result is not for developers. We are for the masses. That's why we
had to invent this mode where the XML guy or Web developer would be
able to introduce a schema into something an end-user can
understand, a template, and then the end-user is going to use that
template. I know that in general the XML developers do not think
about this kind of thing. But we are not here to enable XML
developers to be happy creating XML. We are putting XML
generation into the hands of people who do not understand XML at
all.
Discuss (Join / Login first) Edit
permalink: #
|
| Using
Amazon Web Services With PHP And SOAP (part 2) |
| In this concluding part, I'm going to spend some time
discussing the search features built into AWS, showing you the
various types of search options available and illustrating, with
examples, how they can be used to improve the user experience at
your store. I'll also show you how to link your store up to Amazon's
transaction system, by adding support for both shopping carts and
wish lists to your site. All that and more, inside! -- icarus
Discuss (Join / Login first) Edit
permalink: #
|
| Real-time
Animated Graphing using Flash MX |
| Macromedia Flash MX has now become the professional standard
authoring tool for producing high-impact Web experiences. Whether
you are creating animated logos, Web site navigation controls,
long-form animations, entire Flash Web sites, or Web applications,
you'll find the power and flexibility of Flash MX. In this article,
we will go ahead to crank out an impressive but simple (and
flexible!) real time animated graphing solution in Flash MX! --
Pallav Nadhani
This is actually an ASP article, but I think there are
cool ideas here, and a bit of cross-pollenization is kinky.
Discuss (1
response) (Join /
Login first) Edit
permalink: #
|
| Comparing
Databases |
| Generally speaking, there are four different types of
databases available on Linux: key/value, relational,
object-oriented, and XML. Each has strengths and weaknesses. When
choosing a database you should consider whether it:
- Can handle simultaneous access from multiple users
- Can be easily accessed from programs written in different
languages (especially object-oriented languages)
- Can handle large amounts of data
- Can ensure that multiple operations either all happen at once,
or not at all ("transactions")
- Can perform complicated searches ("queries")
Discuss (Join / Login first) Edit
permalink: #
|
| The
Law of Leaky Abstractions |
| TCP is a way to transmit data that is reliable. By this I
mean: if you send a message over a network using TCP, it will
arrive, and it won't be garbled or corrupted.
We use TCP for many things like fetching web pages and sending
email. The reliability of TCP is why every exciting email from
embezzling East Africans arrives in letter-perfect condition. O joy.
By comparison, there is another method of transmitting data
called IP which is unreliable. Nobody promises that your data will
arrive, and it might get messed up before it arrives. If you send a
bunch of messages with IP, don't be surprised if only half of them
arrive, and some of those are in a different order than the order in
which they were sent, and some of them have been replaced by
alternate messages, perhaps containing pictures of adorable baby
orangutans, or more likely just a lot of unreadable garbage that
looks like the subject line of Taiwanese spam.
Here's the magic part: TCP is built on top of IP. In other words,
TCP is obliged to somehow send data reliably using only an
unreliable tool. - Joel Spolsky
One of the most beautiful essays on science and computers
I have ever read. As brilliant as anything Lewis
Thomas has written.
Discuss (Join / Login first) Edit
permalink: #
|
| Picking
a Real World Release Dates |
| I've worked in big software companies, teeny tiny small
software companies and worked with software companies all over the
globe. And one thing remains constant: we all screw up release dates
with the regularity of snow at the North Pole. I have to think that
a big part of it is that managers fail to take into account one
simple thing:
I'm a person first. A worker second.
Discuss (Join / Login first) Edit
permalink: #
|
| Using
Amazon Web Services With PHP And SOAP |
| Now, your favourite language and mine, PHP, has recently
started shipping with support for XML-based remote procedure calls
(including SOAP) over HTTP. This makes PHP ideal for developers
looking to integrate Amazon Web Services into their Web
applications. The only problem? Not too many people know how to do
it. That's where this tutorial comes in. Over the next few pages,
I'll be demonstrating how you can use PHP, in combination with
Amazon Web Services, to add powerful new capabilities to your Web
applications. Take a look. -- icarus
Discuss (Join / Login first) | |