These days, everyone seem to be very careful about internet security and privacy. It seems like since it’s over the web, it has to be important. People tend to forget that their privacy is not only important on the web but also in all other communication methods. The phone is not more secure than email. Listening to someone’s phone probably does not require more effort than reading someone else’s emails.
I’m just surprised to see how much confidential information people diffuse while they are in public places. I hear people talking to each other, talking on the phone. I can see them taking notes or reading confidential data without even trying to read it.
When calling the bank or any other place that have a file on you, they usually ask for confirmation information. You have to tell them, no matter where you are. In what is your birth date or account number a secret anyway? Anyone stealing a wallet has those informations. I’m not trying to create a paranoia, I just feel people should calm down, the web isn’t that insecure. At least it’s possible to encrypt data and use a password without having anyone hearing or having it written somewhere on a card.
Have you ever heard someone saying there were two types of programmers: those developping libraries and those developping applications. I don’t thing things can be sparated that easily. I just can’t see the difference between writing an application to access a database and a library that handles the requests and write files or anything. In the end, your code will be made out of classes and methods, loops and conditions and a bunch of variables. What’s the difference?
The only real difference is that a library is meant to be re-used and will generally work at a lower level: closer to the system and architecture. System programming has complexities and particularities, it does require special knowledge of the context. So does buisness logic programming where the developper has to be aware of the structure of the organisation and work processes. Even interface design is not simple. Most applications have worthless interfaces that barely suit anyone’s need because it was created by a programmer, but a real good interface is made for the user.
In the end, all the different layers do is abstract the complexities of the underlying architectures to reach a fully usable application. In facts, much more layers can be required depending on the size of the application and no bold line can indicate the division between library and application. The different layers simply bring the technicalities of the system to the reach of the user. A well structured project would not have less programming quality in the upper layers and the documentation would be adequate at all levels. The fact that a library should have a better design or documentation simply makes no sense.
About every university course has it’s website where professors place their slides and all kinds of information. The wrong part is those asking you to visit their website frequently to read news and updates on the course plan. I don’t like the idea of having to visit a website daily. I do visit Slashdot every day, because if I don’t I’ll miss content, but I don’t want to be forced to visit a course website every day! Why don’t they simply put up an RSS/RDF/Atom feed so I can simply see when new information is available?
It might be too high-tech for them, but I can’t accept this as an excuse in a software engineering program. Even a mailing list would be better than having to visit a website.
I have heard a complaint yesterday about F/OSS developpers being rare and that basically, all of them were workaholics. I don’t know where those people hang around at, but I don’t feel F/OSS developpers are rare. I might just live in a weird world, but those people are all around me. There are millions of members of the community worldwide, of course they don’t all work full time on open source, but it sure isn’t rare to talk to a programmer and hear he’s working, or at least contributed, to an open source application.
There are many reasons why a developper would want to contribute to a community-driven project and I don’t really thing the lack of affection is one of them.
- Need the application: probably the best reason of them all
- Learning or self improvement: Facing real problems is probably the best way to improve skills
- Gain experience: It can’t be bad to see how other people solve problems
- Improve his curriculum vitae: A few extra lines are never a bad thing
- Simple interest for the purpose of the project: Being part of a project gives opportunities to gather knowledge
- Desire to help others: Why not?
Due to the nature of the web, people from different nationalities can reach websites. Large websites and portals usually have the content available in multiple languages. On a static website or where the content is tightly controled by a maintenance team, the content can be updated as the changes are made by the team dedicated to it.
When it comes to a collaborative websites where any user can add content, the translation process becomes much more complicated. Since the modifications can be done at any time and the author of the modifications probably can’t translate in all languages, the pages which are supposed to contain the same content end up having huge differences. A good example of this is Wikipedia, which is a great website with tons of content, but sadly, most of the content is only available in english. It’s not rare to see a page where the english version contains 10 printed pages of content while the french version barely has one.
The rest of this post contains more details about the problems and ideas to improve those websites.
Continue reading “Multilingual Collaborative Websites”
I just felt on a page dedicated to XForms on php.net. It’s pretty much only information as nothing special is required, but the method is still interesting. Since XForms sends the data as XML as the POST data for the HTTP request (as raw data). If always_populate_raw_post_data is set to on (which is not a default setting), the data can be accessed from
$_SERVER['HTTP_RAW_POST_DATA']. Using this setting will cause PHP to always populate a variable with data that could be large, which would cause slow downs with time. Instead, you can read the data from the input stream when required. Once you have the raw data, you can simply use your XML parser of choice to read the content.
<?php $fp = fopen( "php://stdin", "r" ); $data = ''; while( !feof( $fp ) ) $data .= fgets( $fp ); fclose( $fp ); ?>
Even if XForms is not currently supported in browsers, it’s already used by multiple applications and should soon become an important standard in application communication. Of course, the traditional URL encoded POST data does the job, but XML simply opens more possibilities, such as validation against an XML Schema. It’s also a lot easyer to implement for a common application. All languages have XML libraries ready to use.
As a side note, I also noticed a section on security which gathers the most important concepts to be aware of during development. It seems like a response to multiple articles on security that have been written recently. Having all those informations centralized can’t be a bad thing.
One of the common complaints I see about Linux and Open Source in general is that there are no standards in the way things are handled. The most frequent example is the packaging systems that are different between distributions. You probably already heard things like
They should do it this way! with a lot of vision and knowledge of the actual problems and situation. I think the real problem actually comes from those same idealistic people. Their ideas aim to unify the way things are made, but the new project they create simply becomes one of those other distributions.
There are currently two major trends: Debian’s apt-get style installers and RedHat’s RPMs. Distributions simply adapt the packages to their own needs and vision. Most distributions aim toward a different audience, have a different vision on what a release process should be and what is acceptable. Debian has very high quality standards and has a long release process. Gentoo intermediate to advanced power users with general knowledge of Linux. Mandrake is all about user-friendlyness. Xandros wants to be like Windows. YellowDog is for Macs. Each distribution has it’s own favor and it’s just fine as it is. As long as an application can be compiled on all of those systems, there is no problem to be seen. Isn’t the good old source code the most portable solution?
Your operating system shouldn’t tell you who you are or what your preferences are. Choose what you are comfortable with.
With the new set of W3C standards implementation coming up, it feels like the browser war will get a second round. The Mozilla project has been very active with the SVG support and the results are very impressive. Web applications will be more dynamic than ever. The problem developpers encounter is that very few browsers actually support this new technology and millions of Internet Explorer users will be left behind.
SVG is only the tip of the iceberg. Mozilla’s XForm implementation, which is supposed to replace the forms in XHTML 2.0, has already begun. A few elements CSS3 start to appear. Right now, XHTML 1.1 is impossible to use if IE support is required. Can a sinlge browser really slow down the technology development process?
We can only hope Microsoft will release a new version that at least comply to the standards soon. I wouldn’t expect new technology anytime soon.
Mozilla has been mentionned a lot, but the growing popularity of Macs since OS X also helps the cause. Safari also offers good support for new technologies.
As a default behavior in PHP 5, using an object in a
foreach structure will traverse all public values. Multiple Iterator classes are available with PHP to allow you to iterate through common lists, such as directories, XML structures and recursive arrays. It’s possible to define your own Iterator classes by implementing the Iterator interface, which will override the default behavior. Using this method will allow great flexibility in data management and give a great opportunity to draw a line between display logic and buisness logic without having to generate an array containing all the data as it was required before to use
It also avoids using the
while loop method which was based on the fact that a function could return values of multiple types. It’s not a bad method on it’s own, it actually loops clean enough, but if PHP ever want to be able to interact with other languages naturally, or the other way around, those methods are to be avoided.
The remaining section describes the technical aspects of the Iterator interface.
Continue reading “PHP 5 and Iterator Beauty”
I decided to move from TikiWiki. Even if it’s a great project, it does not suit my needs very well as it contains way too many features and this website does not aim to build a community. The rare few readers probably know that it’s mostly inactive and only contains a few random ideas. A blog will allow me to post more often and with less importance.
I went for DotClear, which seemed simple and light. It’s also one of the first applications I felt on.
Anyway, I will continue working on TikiWiki, even if I no longer use it. It’s a very dynamic project with a lot of potential!