Archive for the 'joomla' Category

Summer of Code Mentor Observations for 2009 – Part 1

April 06th, 2009 | Category: joomla,soc

A few observations I have from applications so far this year (I’ve done around 40 so far):

  1. Don’t copy and paste
    This includes two things: don’t copy from the ideas page because it just looks bad (plus it makes it look like you’re padding your content out) and don’t copy from your other proposals. I’ve seen a few where I’ve seen things copied and pasted between proposals and it just cheapens the proposals. Not the boring “who am I” crap but stuff like time lines and other stuff that could easily be unique.
  2. The boring crap about you as a person can live else where.
    I don’t personally bother with referees or so much what you’ve done because at the end of the day if I think your proposal sucks then I’m not going to bother. Once I’ve gone through and found a proposal I like I’ll grill at that point, or even ones I don’t like but have a passing interest in.
  3. Your proposal in your words should be the majority
    I’ve also seen a few proposals where the actually interesting bit of what you think you’re going to do is maybe a third of the proposal (or even half) with the rest of the space taken up with things that aren’t relevant like references and their CV. See point 3, this is stuff you can reference.
  4. Don’t use Word
    The worst thing about this is that the rich text editor seems to not properly handle the Word crap, which is unfortunate. I’ve had proposals where the ‘font definitions’ from Microsoft Office (you can easily identify them by their ‘mso-‘ prefix for things) spams up the page and in one case was longer than the proposal. Please don’t use Word, use Notepad or some other text editor. Hopefully something with a spell checker or at least if you have to write it in Word copy it through Notepad and reapply your formatting.
  5. Put emotion into your proposal and demonstrate understanding of the problem
    There were a number of proposals that seemed to miss the point of the idea and more that seemed to not understand the root problem the idea was trying to address. Try to understand the problem and perhaps have some form of emotional attachment and look at the problem and provide depth. Show you’ve at least done a cursory study of the problem instead of saying you’ll start solving the problem in week 4 of your SoC.
  6. Community Bonding is when you learn stuff
    There are tonnes of proposals where they spend a month before they start writing code instead working on research, planning and learning how the system goes together. There is over a month of time _before_ SoC starts but _after_ you’ve been accepted where you can spend the time learning the system, setting goals and preparing to get started from day one. You can even start coding during this period to give you a head start though I’d personally understand if you didn’t want to do that. Eating a month into coding time trying to work out what you’re going to do with the other period of time isn’t good enough. SoC is already time limited without you creating even more work for yourself.
  7. Put the slack at the end not at the start
    The other issue with number six is that the slack is pushed at the start when you think you have time. So you plan there but why would you have a timeline in your proposal if not to plan? So far I’ve only seen one, perhaps two, projects that had their slack time at the end of the project not at the start of the project. Slack time is where you catch up on the deadlines you know you reached. You need it. You really do. Even if you don’t think you do, you will. And if you waste it in the first month by ‘planning’ or ‘designing’ what you’re going to do in the next two months then you’re already behind the person who had it in part planned at proposal time, solidified their plans in the month after they were accepted and started from day one writing code.
  8. Be different
    A carry on from number 5 is being different. Propose something relevant (check with the mentors first) that isn’t on the list but you’re passionate about or interested in. Doing something unique will set you aside from masses who just went for the publicised ideas. Also try to keep your own idea to yourself to minimise your competition: SoC is still after all a competition so you want to maximise your changes. Doing something new and different is a breathe of fresh air. Already I have two categories so far with 9 proposals and 6 proposals respectively vying for attention. This doesn’t mean you just apply for one and you can’t apply for ones from the ideas page, but it does mean that you should try something that isn’t necessarily on the ideas page – something you can be passionate about.

I’m sure I’ll have more to come but that is a good start for me so far.

No comments

Protecting against invalid data: The Joomla! 1.5.10 installer issue

March 31st, 2009 | Category: development,joomla

With the release of 1.5.10 we introduced an interesting side effect with an installer fix. This  side effect caused a whole heap of incorrectly written XML install files for components to fail to install. The reason for this is simple: a check added in the component installer that silently ignored errors in the XML file specification until the installer fix by passed that check in certain specific situation causing those broken XML file’s to break but for intended functionality to actually behave properly.

Read more

4 comments

Joomla! 1.5.10 and updating your Joomla! instance

March 30th, 2009 | Category: joomla

Being a Joomla! person, I keep up with the updates for Joomla! and I even have my own tool for doing this. The Update Manager I wrote for Joomla! 1.0 (and the version I wrote for 1.0 still works though we haven’t had any upgrades!) was upgraded to support 1.5 and is now a part of my Advanced Tools package.

Read more

49 comments

Putting Token Login to work

So a few weeks ago I released JAuthTools 1.5.4 which features Token Login. Token Login was created to solve the need to generate a secure token that you can use for automatic login, for example with stuff like newsletters. Today I’m going to show you how you can write something simple with Token Login to handle automatic login with tokens in a unique problem case.
Read more

14 comments

Using Context Login with GMail and Google Apps for your Domain

February 08th, 2009 | Category: authentication,google,jauthtools,joomla

Context login is a new concept that I’m introducing in 1.5.4 that features a new login module called “mod_contextlogin” and support from both the Advanced LDAP and Advanced GMail plugin. I’ll focus on today the GMail plugin and how you can use both context login and the Advanced GMail plugin to connect to two different Google supported domains (e.g. GMail and a Google Apps for your Domain site).

The first step in all of this is to install JAuthTools. The Context Login bit is mostly self contained so once you’ve got my Advanced Tools extensions installed you should be able to install the extras package. You can grab the 1.5.1 version of the Advanced Tools extension off Joomla!Code at http://joomlacode.org/gf/download/frsrelease/6797/22390/com_advancedtools.tgz and install directly in Joomla!. The next item we’re going to need is the helper package, the best way to grab this is to install the JAuthTools Core Package from http://joomlacode.org/gf/download/frsrelease/9530/36171/pkg_jauthtools_core.tgz which will also give you SSO and User Source libraries as well. The JAuthTools Extras Package contains both the context login module and the Advanced GMail authentication plugin. The extras package also has the LDAP user plugin and the Advanced LDAP plugin but we’re not going to use that today. The current version of the extras package is 1.5.4 (just released!) and you can grab it off JoomlaCode at http://joomlacode.org/gf/download/frsrelease/9530/36195/pkg_jauthtools_extras.tgz and you can also install this directly into Joomla!.

Once you’ve got everything installed, you can get to work. The first place we need to go into the Module Manager in the Administrator and look for Context Login. It’ll be there but it won’t be published by default. Opening it up we’ll see a lot of the params that we know and love from the core built in login module but we’ll also see some params immediately below the caching option called “Contexts”, “Require Context” and “Default Context”. The “Contexts” param is a text field that allows you to enter a per line entry of contexts. In this case we’re going to have two different contexts: one for the main GMail domain (gmail.com) and another for a Google Apps for your Domain (say “yourdomain.com”). Perhaps you’ve got a few of these domains that you want to limit people to so what you can do is enable the “Require Context” option. This will enforce a given context upon the module and remove the ability for the user to be flexible. Keep in mind that this isn’t added with the request, only a context ID is sent which is then looked up and found on the remote site. The last option is the default context to use which is set to -1 initially but can be set to the index of the context (starting from 0). This changes the context select box with the default selected and is purely a cosmetic setting. Once you’ve put in a few domains, you can enable the module and position it somewhere. If you want to put in some extra settings you can also do this like you would do with the normal login module.

The next step is to configure the Advanced GMail plugin. The Advanced GMail has all of the features of the existing GMail plugin and then some. If you’re currently using the GMail plugin, disable it first before you switch to the Advanced GMail plugin. The Advanced GMail plugin has a few configuration options such as “Apply Suffix” (similar to contexts but limited to only a single domain), “Username Suffix” (used with Apply Suffix, a single domain name such as “gmail.com”) , “Verify Peer” is a SSL configuration option that should be left on unless you’re having seriously strange issues (at this point, change host!) and that leaves us with “Use Contexts”. This is a simple option that has “Yes”, “No” and “Require”. What this then causes it to do is look for a context in the request and then apply the context if it finds it. The “Require” option will then enforce the use of contexts and will fail the user if the contxt doesn’t line up properly. The last option is a ‘username’ blacklist. This is a list of usernames that the plugin should never authenticate for which is useful for accounts that you may not control (e.g. ‘admin’) to prevent people logging in using it. This is an extra security feature that I’ve introduced and is certainly recommend using. Enable the plugin and we’re off!

Once both the module is configured and enabled as well as the plugin you should be able to see it in the front end. From here you can see the form and log into to it, selecting your context and then logging in appropriately.

40 comments

JAuthTools 1.5.4 Released

February 08th, 2009 | Category: authentication,jauthtools,joomla

Today I finally got around to releasing JAuthTools 1.5.4, the latest release in JAuthTools. I’ve put together a lot of stuff for this new release and I’m happy to have it released out there. This release introduces Token Login, Context Login, the release of my own LDAP and GMail authentication plugins each with extra advanced features (including context integration), an OpenID SSO plugin submitted by Ian MacLennan, a new way of handling SSO plugins with new types of plugins and many more. There are tonnes of little items that I’ve added as well as bugs that have been fixed. I will follow up with blog posts about how you can configure different items to work together.

11 comments

Today: 11-Nov-2008: Joomla! 1.5.8 and assets

November 11th, 2008 | Category: applications,joomla,today

I spent the majority of my morning working on getting Joomla! 1.5.8 released due to issues with the package builder. The first was more an issue with people not being patient enough and the next was an issue with the Xserve we’re trying to setup to be a build and test server. My older Linux box stepped up and faithfully albeit slowly built the final packages. From here Anthony did the rest of the work uploading the packages, tagging and finalizing the release.

From here I headed off to TRC and spent the day taking apart a dead Maxtor OneTouch and recovering it’s drive (which was still good, the USB controller must be dead) as well as trying to find a replacement for our road defect register. I thought that there was something that was going to work but it looks like investigating things that it isn’t going to work. Another project is born.

No comments

Today: 10-Nov-2008: Tasks within tasks

November 10th, 2008 | Category: joomla,today

Another day passes with nothing interesting to report. I spent some more time working on getting the task system to work focusing on issues arising from having tasksets within another. The main reason this is important is that the backup framework will create it’s own taskset for each instance and potentially the backup adapter will create it’s own task set. In the case of the SQL backup adapter it already uses the new data load framework to provide the restore functionality. This system also uses tasks to provided the ability to handle large data loads without timing out. Cool eh? The problem is that we start layering each of these tasksets so we need to ensure that we return the previous taskset so that it can resume properly. I think that I have everything set up in a way that will work properly so I just need to code up the individual pieces and get them to work. It’s just a lot of little pieces.

No comments

Today: 6-Nov-2008: Barcodes and Backups!

November 06th, 2008 | Category: development,integration,joomla,opensource,today

As it seems a few of my mornings are starting I played a quick albeit one sided game of Dawn of War with my house mate to test that the network play was working between my Mac (using CrossOver Games) and his PC (Windows XP). Suffice to say everything worked fine network wise, my Mac stil has some visual issues but I’m not too phased about that at the moment. So that was an interesting start to the day and when he returns from work it’ll be an interesting end as well.

Work again is fun as always. We’re working on solving various election problems and getting envelopes. Our printers came back stating that they didn’t want to do Code 128 for the barcodes because its too hard preferring Code 39 instead. As the day progressed it turned out that we’re going to use Code 128 more for space issues because we’ve got that much junk going out on the envelopes. This saga has been occurring over a few days, I really want to get a few proofs done before we actually get the batch done from them first to ensure that everything is good but we’ll see. Testing on the system we’re going to be using to track the election on has also begun to ensure that the system can in fact handle items properly, we had a word of warning from one of the newer guys from the regions that it had issues and that was with nowhere near the same workload. So we’re hoping we can test the system out with a few VM’s emulating the system for multiple data entry. There have been issues with the system in question in the past (in fact the system is being replaced)  so hopefully this won’t be a time when it does have issues otherwise we’re going to have large numbers of problems.

The bulk of my day was spent working on the restore framework for Joomla! 1.6, or more accurately the new JDataLoad system and the JLoaderSql adapter. The data load system, as its name suggests, loads data into the Joomla! database from a data source. In this case I’m looking at the SQL files which in my sample data is actually one of the 1.5 sites that I’m an administrator over at work. Its relatively small in the grand scheme of things with only a few meg and around 9000 queries. So far its been sufficient to find a few issues, one being dropping a table before a task yield which caused a missing table error from J! (put in a simple patch for that, if the last query was a drop, go to the next query in the hope that its a create) and another was a minor typo error which caused some multiline strings to be processed incorrectly when they were on a yield boundary again as well. But all in all its working well even importing data faster than MySQL Query Browser was (to its fairness it highlights each query as it goes) in my test runs. Its now committed to trunk and when I get a chance I’ll write up something about it and put it somewhere

Extra fun today came from trying to write up business cases for the projects I want to work on in the next year or so until I have to write it up again (fun, yeah!). Initially my boss (who is great) thought of me and tried to convert the files from Excel into a more Open format so that I can get at it on my Mac and Linux box. Somewhere during the conversion however the fields got trimmed and data lost, so I offered to edit the document in Excel directly using our Windows only document management system logging in via our Citrix services. The system, OpenText’s DM, isn’t too bad for the most part and does the job well and today I found no fault with it. Today was the day when Microsoft’s tools decided they wanted to misbehave.

Earlier in the week my boss had emailed me a doclink to the document stored in DM. A doclink is a small text file with the document number in it which basically triggers the system to load the specified document, something that usually works quite well. However Outlook, due to various configuration changes, decided that it didn’t want to start for some reason even though earlier in the week it was working perfectly fine. After Outlook repeatedly informing me it wanted to recreate my profile and then informing me that it couldn’t contact my Exchange server and offering to allow me to work offline which consequently failed due to a lack of a profile, I ended up using Mac OS X’s built in “Mail” application (yes, the email application is called “Mail”) to get at my email to find the document number and open it. Usefully enough this is done through the IMAP interface on Exchange and worked well and doesn’t suffer from some of the other issues that the Outlook clients have, such as the address book caching which caches the old Lotus Notes addresses instead of their newer Exchange ones resulting in emails going to the wrong place. Yay Outlook! Suffice to say I found the file and made the changes that I needed to before accosting our Exchange administrator who had returned to see if he could fix the issue – which he did mind you after some trial and error.

The last little item I looked into was building a system to version the content from Joomla! back into our document management system. The new document management officer assures me that we can do it and has even proposed a nifty way of importing the data into the system. It looks like one of the products we have, KoFax, will help us by allow us to generate XML files which specify the documents that we’re creating and the different versions. If we can get this to work it will be really awesome as it’ll mean that our website is in part integrating back into our document management system without hacking into the database! I’ve still got to build it and work out where we want to target the extension, but suffice to say its on my project list for next year.

No comments

Today: 05-Nov-2008: Kerberos and Joomla! 1.6’s Backup system

November 05th, 2008 | Category: joomla,kerberos,opensource,programming,today

Today had a lackadaisical start with me working on getting Dawn of War:Winter Assault to work on my Mac (once it was fully patched seems to have started working, yay for no copy protection!) after doing a whole heap of disk swapping last night to get the base installed only to see it complain it couldn’t find a CD/DVD drive. After I installed the 1.50 patch it asked me if I wanted to start and for the first time it actually started the game without issues. I managed to load it up and play a quick game and fielded a call from my Mum before heading to work. I also added some projects to my list and categorised items, now on the todo list: an automated login key generator for Joomla! and a component to compliment the ban IP/address plugin. Now all I need is time!

The Kerberos keys that I had asked to be remade were ready for me by the time I got there. It took a bit of time to rebuild the different keytab files to support the vhost environment (need to merge the respective keytab files) but once that was done everything was working. Well, mostly working. Firefox on my Mac worked fine, Firefox on the Windows desktops I tried worked when they were configured (see http://grolmsnet.de/kerbtut/firefox.html for information on what you need to do to get Firefox to do negotiate), IE on most of the desktops worked fine however some installations weren’t getting SSO, all of the Citrix servers seem not to pass through authentication (they end up going in a weird loop where IE appears to keep loading the page) and Safari on my Mac doesn’t seem to want to play the game either. Perhaps I’ll sort that out over the next week or so but that consumed a reasonable amount of time going through and checking different IE versions and if they worked. The only machine not to play the game seems to be Firefox on my Linux desktop (it should be working) so I’ll have a look at the ones that don’t work and why they don’t want to work. For the Windows boxes I have the feeling that the Netware client is causing issues (which would explain Citrix) so hopefully when our network eradicates Novell we’ll be fine.

And that leads us to the afternoon’s fun of building Joomla! 1.6’s backup system. I’ve managed to get the system to export the sample database, reimport it and then delete the files afterwards so I’ve moved onto much larger goals. I’ve taken one of our internal websites and I’m trying to get it to important. Suffice to say that it has enough data to cause an issue with the system. For data loading I’m using a heavily modified version of Alexey Ozerov’s “BigDump” script, which has been used in the past in a less modified form for the Joomla! 1.5 migrator. It is slowly being converted to use the new Tasks system in 1.6 which is another concept borrowed from the 1.0 migrator. The Tasks system in 1.6 has two items: a task set which is a container for individual tasks. So considering backups, one task set might be a full backup run of the site with individual tasks being an SQL backup, a file backup (tar archive perhaps?) and maybe copying that to a remote FTP site or similar. So the one task set would have an “SQL backup” task and a “file backup” task. Extension package installation may do a similar item as well splitting the install into different parts.

A new part of this is the data load system that provides functionality to read and load data files, at the moment only supporting SQL but I’m hoping I’ll be able to create a CSV one as well some luck, again probably reusing Alexey’s code in part here as well. I’m mostly through building parts of this system though I’m experiencing a strange issue with my sample data (hence why the updates haven’t been committed to J!’s SVN repository today) where it loads the file up through to almost 2000 queries and seems to stop suddenly. I’m not quite sure whats going on but I’m happy enough that the task system is picking up and storing values for it to progress as far as it does.

Another successful day spent on my Mac as well, NetBeans doesn’t seem to want to look at my project any more crashing instead of loading it which is disappointing but I’ll work that out another day. And now its time to enjoy some Dawn of War.

No comments

« Previous PageNext Page »