It's the end of first day of EuroPython 2008, a good time to overlook what I've seen.
Right after the keynote, which was short and uplifting, I've headed to the first session - Dynamic Compilation in Python and Jython by Tobias Ivarsson and Jim Baker. It was long and boring, but still inspiring. They looked into things like bytecode versus AST manipulation, introduced nice tools like pyassem. It's nice to see that Java and JVM is a hot topic in smart programmer communities. I consider Python community as one of the smartest people in software development.
Then I went to listen to my native speaker Ignas Mikalajūnas from Programmers of Vilnius. He told Why he Wants Us to Use Eggs. I would disagree with saying "Eggs are to Pythons as Jars are to Java...". It's more like "Eggs may some day be to Pythons as Maven is for Java". For now Eggs look scary and unstable especially with things like Known Good Set (compare it to Maven Repository). Though I would definitely want to use it for Python projects. Better than nothing.
Then I made a mistake by visiting John Pinner's "Python at Home" talk. He was going to tell how he automated his boiler at home with use of Python. I expected a lot from that, instead I've seen some photos of a boiler wired to a motherboard and some source code like "boiler.ignition(On)" and "boiler.ignition(Off)". I would recommend John (and all the other speakers) not to dig deep into source code but concentrate on big picture instead.
I didn't want to go to vendor pitch sessions or things that does not sound interesting (Advanced Searching for Plone and stuff), so my choice was the Barcamp / Open Space, where Tommi Virtanen was giving a talk on Twisted. If you want messaging in Python, do it in Twisted. The guy gave a great quote of Torvalds Linus, which sounded something like "If you have to use debugging - you already have problems. Take a step back and review what could be wrong". It definitely was a great session.
I was going to visit "Discouraging the Use of Python" next, but I was tired and didn't want to be discouraged, so I've headed home to write all this down.
Most of attendees I've spoken to admit that last year's EuroPython was way better than this. But well, two more days to go.
Now for some fun moments:
Canonical was hiring Django developers and senior engineers.
Until the epic failure of their campaign:
All pythonistas got a copy of NetBeans 6.1 and Open Solaris (go Sun! :)) along with geeky looking Bazaar T-Shirt.
And of course, loads of free coffee, snacks and socializing!
See You there at Day 2!
Update
Yesterday I forgot to mention that Guido Van Rossum did not participate in the conference like the last year. I did not participate in his video keynote either...
2008-07-07
EuroPython 2008 - Day 1
2008-07-02
CMS battle: Drupal vs Joomla vs Custom Programming
In modern Content Management System (CMS) world there are two major figures - Joomla (descendant of Mambo CMS ) and Drupal. They both are open source and have large comunities with enormous amounts of extensions and themes. It's hard to choose which one to use without trying them out. As usually, there are more options - home grown custom programming or even building your own CMS (which I was once stupid enough to do). Programming from scratch is always fun and beneficial for your skills, however, if you need things up and running in no time or you don't do (or don't want to do) any programming, using a CMS is the way to go.
If you are digging for CMS comparisons and trying to decide which one is best for you, here is a quick and dirty answer - go for Drupal, you won't regret it.
Why?
After test-driving them both I've came to these conclusions:
- Joomla is bloated, Drupal is minimal
- Drupal is easy to use and intuitive, Joomla is confusing
That was more than enough for a minimalist like me.
Here are some statistics from CMS Matrix for a more detailed comparison. It shows that Drupal is extremely modular and Joomla has a heavy core, thus a terrible architecture. That means Joomla is hard to extend and messy under the hood. Drupal, on the other hand, looks beautiful.
Product | Drupal 6.2 | Joomla! 1.5.3 |
Last Updated | 4/10/2008 | 5/31/2008 |
System Requirements | Drupal | Joomla! |
Application Server | PHP 4.3.5+ | Any that supports PHP (Apache recommended) |
Approximate Cost | Free | Free |
Database | MySQL, Postgres | MySQL |
License | GNU GPL | GNU/GPL v2 |
Operating System | Any | Any |
Programming Language | PHP | PHP |
Root Access | No | No |
Shell Access | No | No |
Web Server | Apache, IIS | Apache |
Security | Drupal | Joomla! |
Audit Trail | Yes | No |
Captcha | Free Add On | Free Add On |
Content Approval | Yes | Yes |
Email Verification | Yes | Yes |
Granular Privileges | Yes | No |
Kerberos Authentication | No | No |
LDAP Authentication | Free Add On | Yes |
Login History | Yes | Yes |
NIS Authentication | No | No |
NTLM Authentication | Free Add On | No |
Pluggable Authentication | Yes | Yes |
Problem Notification | No | No |
Sandbox | No | No |
Session Management | Yes | Yes |
SMB Authentication | No | No |
SSL Compatible | Yes | Yes |
SSL Logins | No | Yes |
SSL Pages | No | Yes |
Versioning | Yes | No |
Support | Drupal | Joomla! |
Certification Program | No | No |
Code Skeletons | Yes | No |
Commercial Manuals | Yes | Yes |
Commercial Support | Yes | Yes |
Commercial Training | Yes | Yes |
Developer Community | Yes | Yes |
Online Help | Yes | Yes |
Pluggable API | Yes | Yes |
Professional Hosting | Yes | Yes |
Professional Services | Yes | Yes |
Public Forum | Yes | Yes |
Public Mailing List | Yes | No |
Test Framework | Free Add On | Yes |
Third-Party Developers | Yes | Yes |
Users Conference | Yes | Yes |
Ease of Use | Drupal | Joomla! |
Drag-N-Drop Content | Free Add On | No |
Email To Discussion | Free Add On | Free Add On |
Friendly URLs | Yes | Yes |
Image Resizing | Free Add On | Yes |
Macro Language | Free Add On | Yes |
Mass Upload | Free Add On | No |
Prototyping | Limited | Yes |
Server Page Language | Yes | Yes |
Site Setup Wizard | Limited | No |
Spell Checker | Free Add On | No |
Style Wizard | Limited | No |
Subscriptions | Free Add On | No |
Template Language | Limited | Yes |
UI Levels | No | Yes |
Undo | Limited | No |
WYSIWYG Editor | Free Add On | Yes |
Zip Archives | No | No |
Performance | Drupal | Joomla! |
Advanced Caching | Yes | Yes |
Database Replication | Limited | No |
Load Balancing | Yes | Yes |
Page Caching | Yes | Yes |
Static Content Export | No | No |
Management | Drupal | Joomla! |
Advertising Management | Free Add On | Yes |
Asset Management | Yes | Yes |
Clipboard | No | No |
Content Scheduling | Free Add On | Yes |
Content Staging | Free Add On | No |
Inline Administration | Yes | Yes |
Online Administration | Yes | Yes |
Package Deployment | No | No |
Sub-sites / Roots | Yes | Yes |
Themes / Skins | Yes | Yes |
Trash | No | Yes |
Web Statistics | Yes | Yes |
Web-based Style/Template Management | Yes | Yes |
Web-based Translation Management | Yes | Free Add On |
Workflow Engine | Limited | No |
Interoperability | Drupal | Joomla! |
Content Syndication (RSS) | Yes | Yes |
FTP Support | Limited | Yes |
iCal | Free Add On | No |
UTF-8 Support | Yes | Yes |
WAI Compliant | Limited | No |
WebDAV Support | No | No |
XHTML Compliant | Yes | No |
Flexibility | Drupal | Joomla! |
CGI-mode Support | Yes | Yes |
Content Reuse | Limited | Yes |
Extensible User Profiles | Yes | Yes |
Interface Localization | Yes | Yes |
Metadata | Yes | Yes |
Multi-lingual Content | Yes | Free Add On |
Multi-lingual Content Integration | Free Add On | Free Add On |
Multi-Site Deployment | Yes | Free Add On |
URL Rewriting | Yes | Yes |
Built-in Applications | Drupal | Joomla! |
Blog | Yes | Yes |
Chat | Free Add On | Free Add On |
Classifieds | Free Add On | Free Add On |
Contact Management | Free Add On | Yes |
Data Entry | Free Add On | Free Add On |
Database Reports | No | Free Add On |
Discussion / Forum | Yes | Free Add On |
Document Management | Limited | Free Add On |
Events Calendar | Free Add On | Free Add On |
Events Management | Free Add On | Free Add On |
Expense Reports | No | Free Add On |
FAQ Management | Yes | Yes |
File Distribution | Free Add On | Free Add On |
Graphs and Charts | No | Free Add On |
Groupware | Free Add On | Free Add On |
Guest Book | Free Add On | Free Add On |
Help Desk / Bug Reporting | Free Add On | Free Add On |
HTTP Proxy | No | No |
In/Out Board | No | No |
Job Postings | Free Add On | Free Add On |
Link Management | Free Add On | Yes |
Mail Form | Free Add On | Yes |
Matrix | No | No |
My Page / Dashboard | Free Add On | No |
Newsletter | Free Add On | Free Add On |
Photo Gallery | Free Add On | Free Add On |
Polls | Yes | Yes |
Product Management | Free Add On | Yes |
Project Tracking | Free Add On | Free Add On |
Search Engine | Yes | Yes |
Site Map | Free Add On | Free Add On |
Stock Quotes | Free Add On | No |
Surveys | Free Add On | Free Add On |
Syndicated Content (RSS) | Yes | Yes |
Tests / Quizzes | Free Add On | Free Add On |
Time Tracking | Free Add On | No |
User Contributions | Yes | Yes |
Weather | Free Add On | No |
Web Services Front End | Limited | Yes |
Wiki | Free Add On | Free Add On |
Commerce | Drupal | Joomla! |
Affiliate Tracking | Free Add On | Free Add On |
Inventory Management | Free Add On | Free Add On |
Pluggable Payments | Free Add On | Free Add On |
Pluggable Shipping | Free Add On | Free Add On |
Pluggable Tax | Free Add On | Free Add On |
Point of Sale | No | Free Add On |
Shopping Cart | Free Add On | Free Add On |
Subscriptions | Free Add On | Free Add On |
Wish Lists | Free Add On | Free Add On |
Hope this helps to make a choice.
2008-05-30
XSL Engine
Amazingly, some bright minds of the company I work at supported the idea to release one of our products as an open source software. It's nice to see a huge "Nothing is Free" business opening up a little. I'm proud to present the release of the XSL Engine:
XSLE at Google Code
XSL Engine is an XSL transformation server and client. It provides united processing of XSL transformations, independent of any programming environment. This can remove load from other applications. It features high throughput, with the possibility to increase the throughput of the XSL transformations by setting up new servers. It operates in an Apache Tomcat Web container. XSL documents are loaded into cache. XSL Includes are supported. PDF can be generated (using XSL-FO). XSL cache can be automatically replicated among remote servers.
2008-05-10
Getting Unicode output in Eclipse Console
Tired of seeing garbled Eclipse Console output? Here is a quick and dirty tutorial for getting Unicode output in Eclipse Console.
Fact: You will not get Unicode output in Eclipse Console while using System.out directly in Windows. See Eclipse BUG #13865.
1. add -Dfile.encoding=UTF-8 to your eclipse.ini
2. make sure your Eclipse Console font supports Unicode. You can try it out by typing unicode characters directly to console with keyboard. Console Font is set in Window -> Preferences -> General -> Appearance -> Colors and Fonts -> Debug -> Console Font
3. if you are NOT using Windows, set your system encoding to UTF-8. You should now see Unicode characters in Console after restarting Eclipse.
4. if you are using Windows or do not want to change your OS encoding, you will have to avoid using System.out stream directly. Instead, wrap it up with java.io.PrintStream:
PrintStream sysout = new PrintStream(System.out, true, "UTF-8");
sysout.println("\u2297\u0035\u039e\u322F\u5193");
5. if you are using Log4J with ConsoleAppender, make sure to set the encoding property to UTF-8. Example:
#TRACE appender
log4j.appender.stdout.trace=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.trace.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.trace.encoding=UTF-8
log4j.appender.stdout.trace.layout.ConversionPattern=%p [%c] - %m%n
log4j.appender.stdout.trace.Threshold=TRACE
Happy development!
2008-04-21
Make your Eclipse rock
Eclipse is one of the greatest IDEs available out there. In my opinion it's the best, because in comparison with other choices such as Intellij IDEA, Eclipse is free and open. People say NetBeans are getting good, however I am too skeptic to believe. As it's the matter of preference, I will stick with Eclipse.
Yet, after a fresh and clean install Eclipse (v3.3 as of this moment) is not yet kicking. A few crucial things are missing. I'll give out my recipe to making Eclipse rock. So, let's get on with that:
- Fresh install from www.eclipse.org. As I'm NOT doing J2EE/Web/XML stuff at home, Eclipse IDE for Java Developers is the best choice for me.
- Give it more RAM! Default values are pathetic, so you should edit your eclipse.ini to look like this:
-showsplash
Say bye to those possible out of memory and permgen space errors.
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms256m
-Xmx1024m
-XX:PermSize=256m - Fine-tune the Preferences. Go straight to workspace and open Window -> Preferences.
General:
Check "Show heap status" - it's nice to see how much heap you've got.
General -> Appearance:
Uncheck "Show text on the perspective bar". That gives more space for perspective icons.
Check "Show traditional style tabs". Performance.
Uncheck "Enable animations". Performance.
General -> Editors -> Text Editors:
Check "Insert spaces for tabs". You may not want that if you're a tab fan.
Check "Show print margin". 80 is good.
Check "Show line numbers". Who would not want to see line numbers by default?
General -> Editors -> Text Editors -> Spelling:
Uncheck "Enable spell checking". Performance. And hell, that's no Microsoft Word.
General -> Startup and Shutdown:
Uncheck "Mylin Tasks UI" from "Plug-ins activated on startup". Unless you REALLY want to use Mylin. I think it sucks and terribly slows Eclipse down.
General -> Workspace:
Choose "UTF-8" as your "Text file encoding". Unicode is the way to go.
Choose "Unix" as your "New text file line delimiter". This is also is the way to go.
Java -> Code Style -> Formatter:
Click "Edit..." on Eclipse [built-in] profile. Set new profile name. In "Identation" tab set "Tab policy" to "Spaces only". You may skip this if you're a tab dude.
Java -> Compiler -> Errors/Warnings:
You may want to harden your compiler warnings for more beautiful and strict development. I tend to override these:
In "Code style": "Undocumented empty block" -> "Warning".
In "Unnecessary code": "Unnecessary 'else' statement" -> "Warning".
In "Unnecessary code": "Unnecessary cast or 'instanceof' operation" -> "Warning".
In "Unnecessary code": "Unnecessary declaration of thrown checked exception" -> "Warning".
Java -> Compiler -> Javadoc:
Set "Malformed Javadoc comments:" -> "Warning".
Set "Only consider members as visible as: " -> "Private".
You want your Javadoc clean, don't you.
Java -> Editor -> Content Assist -> Advanced:
In content assist proposal list uncheck entries marked with "(Mylin)" and check the alternatives: "Other Java Proposals", "Template Proposals", "Type Proposals".
In cycling list check all same entries: "Other Java Proposals", "Template Proposals", "Type Proposals".
Web and XML -> XML Files -> Source:
In "Formatting" section check "Indent using spaces" and set Indentation size to "2". Otherwise you will end up with tabs in your XML. - Subversive - the best Eclipse plug-in for SVN support:
Help -> Software Updates -> Find and Install. Search for new features to install. Add two New Remote Sites - "Subversive SVN Connectors" with URL: http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/ and "Subversive plug-in" with URL: http://download.eclipse.org/technology/subversive/0.7/update-site/
Check http://www.eclipse.org/subversive/downloads.php for latest URLs.
Install new components. Skip Mylin integration and sources. - Maven plug-in. You MUST know what Maven is, otherwise don't do Java. Seriously. You may choose from Tycho and Q: http://maven.apache.org/eclipse-plugin.html
I was a long-time user of Tycho, however Q looks really promising. I'm trying it right now for the first time. Yeah, definitely, go for Q. Installation is easy, just add New Remote Site:
Q4E: http://q4e.googlecode.com/svn/trunk/updatesite/ - XML Buddy. Your light weight swiss army knife in Eclipse XML editing. Download plug-in manually from http://xmlbuddy.com and drop it into your Eclipse plugins folder, then restart.
- JADClipse. Your daily Java decompiler. Best for those times when you need to go under the hood. Make this a habit. You will need JAD in your PATH: http://www.kpdus.com/jad.html
Then download JADClipse plug-in from http://jadclipse.sourceforge.net/, drop it to Eclipse plugins folder and restart.