Tags: Projects
Disqus Plugin
2008/10/29 @ 15:03
The first version of the Disqus plugin has been released!
The Disqus plugin allows you to use comments from the social commenting website Disqus. It embeds javascript to show comments when viewing a particular blog post and shows how many comments a post has when viewing a blog post list. Find out more about what Disqus does here. Read more about the plugin here.
Download: disqus_plugin-0.1.zip
Wanted: Dictionary program for Windows/Linux
2008/08/03 @ 18:21I have wanted a good dictionary application that supports a number of dictionaries/dictionary formats for studying Japanese but I've been sort of frustrated that there is no single application that does what I would like. I have looked mostly at stardict and epwing because they are closest to the type of dictionary I want. Specifically I have the following requirements:
- It must work in Linux (epwing and stardict)
- It must work in Windows (epwing and stardict)
- It must support epwing format (epwing)
- It should ideally support an open dictionary format like stardict. (stardict)
- It must support lookup via a popup (epwing and stardict)
- It must support installing dictionaries as a non-root user (epwing)
- It should support minimization to the system tray (stardict)
1 and 2 and 5 are supported by both stardict and epwing but epwing's popup support is less than ideal and epwing supports nothing but epwing and doesn't minimize to the system tray. The way epwing looks up words from multiple dictionaries is also less than ideal,
Stardict on the other hand supports most of the things I want but doesn't support epwing or any way of converting the dictionaries from epwing to stardict format. There are a number of tools to read epwing dictionaries so I think this could be done, but I don't think stardict dictionaries currently support images or media like epwing dictionaries support so converting epwing dictionaries would lose that data. Stardict also has a number of strange plugins and a net dictionary protocol which seems strange. I'm not sure if the server side code is open either.
I've been looking ot the code for each of the dictionaries and it seems like while epwing's code is simpler and easier to read, stardict supports most of the features I want already so it would be better to explore how to add the features I want to add. Development on both projects is pretty much halted so I should be able to add features at my own pace without stepping on current development.
I'm not looking forward to spending a lot of time on it but my frustration with dictionaries has reached a bit of a boiling point.
jsonschema mentioned on json.com
2008/07/31 @ 14:47Kris Zyp (the author of the JSONSchema proposal) mentioned jsonschema on his blog at json.com. Thanks Kris!!
JSON Schema Validator 0.1a for Python
2008/07/31 @ 01:01I just released the first version for a project that I've been working on since the Python Onsen. It's a validator for JSON Schema written in Python. It's based on the JSON Schema Proposal Second Draft.
The source can be downloaded here: jsonschema-0.1a.tar.gz
The documentation can be found here: jsonschema (version 0.1a) documentation
JSON Schema's purpose is to allow validation of JSON documents much like XML Schema, DTD. You can use it to define what kind of data should be present in the document as well as the structure of the data. You might have some JSON for a contact like so:
| { | |
| "name": "Ian Lewis", | |
| "email": "IanLewis@xyz.com", | |
| "address": "123 Main St.", | |
| "phone": "080-1942-9494" | |
| } |
And you could describe this in JSON Schema with the following:
| { | |
| "type":"object", | |
| "properties":{ | |
| "name": {"type":"string"}, | |
| "age": {"type":"int", "optional":True}, | |
| "email": { | |
| "type":"string", | |
| "pattern":"^[A-Za-z0-9][A-Za-z0-9\.]*@([A-Za-z0-9]+\.)+[A-Za-z0-9]+$" | |
| }, | |
| "address": {"type":"string"}, | |
| "phone": {"type":"string"} | |
| } | |
| } |
This can be validated with something like the following Python code:
| import jsonschema, simplejson | |
| data = """{ | |
| "name": "Ian Lewis", | |
| "email": "IanLewis@xyz.com", | |
| "address": "123 Main St.", | |
| "phone": "080-1942-9494" | |
| }""" | |
| schema = """{ | |
| "type":"object", | |
| "properties":{ | |
| "name": {"type":"string"}, | |
| "age": {"type":"int", "optional":True}, | |
| "email": { | |
| "type":"string", | |
| "pattern":"^[A-Za-z0-9][A-Za-z0-9\.]*@([A-Za-z0-9]+\.)+[A-Za-z0-9]+$" | |
| }, | |
| "address": {"type":"string"}, | |
| "phone": {"type":"string"} | |
| } | |
| }""" | |
| x = simplejson.loads(data) | |
| s = simplesjson.loads(schema) | |
| jsonschema.validate(x,s) |
It can be easily extended to include support for new properties or to override the default validation for standard properties so I think it could be used for a wide range of applications. I plan to use it for a Form Maker application (code) on GAE. Let me know what you think!
Gallery2 plugin with TinyMCE
2008/06/04 @ 18:18I made some changes to the TinyMCE plugin for b2evolution to support some callbacks which will allow other b2evolution plugins to register TinyMCE plugins automatically. This is especially useful for the Gallery2 plugin because it will allow me to add a button that allows users to add photos from Gallery2 to their blog posts to TinyMCE automatically when the Gallery2 plugin is installed. Currently it's a pain to get it to work because the standard gallery2 image chooser button doesn't work with TinyMCE and installing it requires you to copy the g2image directory to another location.
Fortunately these sorts of callbacks are implemented in the b2evolution Plugin API already. I just needed to specify that the TinyMCE plugin has some extra callbacks and then fire the associated events at the right time. The code is a bit awkward but it serves it's purpose.
The first part is specifying the extra events.
| function GetExtraEvents() | |
| { | |
| return array( | |
| "tinymce_before_init" => "Event that is called before tinymce is initialized", | |
| "tinymce_extend_plugins" => "Event called to allow other plugins to extend the plugin list", | |
| "tinymce_extend_buttons" => "Event called to allow other plugins to extend the button list" | |
| ); | |
| } |
Then I fire the events like so. The 'tinymce_extend_plugins' and 'tinymce_extend_buttons' events allow other plugins to modify the plugins list and buttons list via a special "get_trigger_event" call.
| $tmce_plugins_array = | |
| $Plugins->get_trigger_event("tinymce_extend_plugins", | |
| array("tinymce_plugins" => $tmce_plugins_array), | |
| "tinymce_plugins"); |
The plugins list is modified on the Gallery2 plugin side by adding an implementation of the event hook. In this case the 'tinymce_plugins' key in the $params array is a reference that can be modified and passed back to the TinyMCE plugin.
| function tinymce_extend_plugins( &$params ) { | |
| array_push($params["tinymce_plugins"], "-g2image"); | |
| } |
You can view the changes made in the checked in code here.
Gallery2 for wordpress
2008/04/18 @ 11:51I took a look at the Gallery2 plugin for wordpress by ozgreg to get some ideas on how they had integrated Gallery2 with the Wordpress blog engine and how I might be able to bring those features to b2evolution. I felt somewhat bad looking at it as I've worked on by own gallery2 integration plugin for b2evolution for about a year and haven't really taken more than a cursory look at the wordpress counterpart. I felt even worse when I realized how slick it is compared to my, comparitavely, rather simple integration.
The scale and amount of code was the first thing I noticed. My gallery2 plugin is on the bigger end, in terms of lines of code, for a b2evolution plugin but the wordpress gallery2 plugin has a few times as much code. This might be seen as bloat if it wasn't for the number of features that it offers.
Both of our plugins use the Gallery image chooser (g2image) to allow users to add gallery images to posts and offer single sign on between the blog and gallery. But there are a number of things that the wordpress plugin either is done better than my plugin or isn't present at all in my plugin.
- Both of the plugins allow mapping of blog users to gallery but the wordpress plugin goes a step further and allows you to manage each user mapping and create and delete users in gallery manually. This is a cool feature and I think I'm going to create something similar in b2evolution's gallery2 plugin.
- The wordpress plugin also offers a wider range of widgets to place in the sidebar and allows more customization including a customizable template. This is cool but the implementation is questionable as it makes use of gallery's php classes themselves rather than relying on the Embedded API. It also generates the sidebar image block itself instead of letting gallery do it. I need to test it but I'm not sure if this works with say, the gallery2 multi-language plugin. I think this kind of manuvering is what precipitated the need for a release compatibility matrix which I think might be a pain for users, so I plan to add some more options while sticking as much to the embedded api as possible.
- The wordpress plugin adds a button to tinymce automatically. Currently with my plugin you have to jump through some hoops. I would like to work with the author of the tinymce plugin for b2evolution to allow me to integrate seamlessly.
- The wordpress plugin creates a page automatically that puts your gallery inside wordpress. This is pretty cool and allows users to more easily integrate their blog with gallery. I'd like to do something similar in b2evolution.
- The wordpress plugin has some url rewrite options which seem to allow you to create nice permalinks inside your embedded gallery page. This might be used somehow to preserve previous gallery permalinks, or just to make nice new permalinks inside your wordpress blog.
- The wordpress plugin searches some common paths for your gallery2 installation. Simple but a useful feature that I didn't implement into my gallery2 plugin.
That seems like a lot doesn't it? I really need to get to work to close these gaps. The wordpress plugin has predated my plugin by almost 2 years and still makes mine look like child's play in terms of features. The integration into wordpress is pretty slick too. The menus are placed in intuitive locations within the admin. That's something I might not be able to do in b2evolution given it's rather antiquated, plugin interface (essentially a Plugin class you extend overridding any needed "hook" methods).
Anyway, look for some of these improvements in the coming weeks/months. ![]()
Fat Jack recommends my plugins.
2008/03/29 @ 01:57Gallery2 Plugin 1.4 Released!!
2008/03/23 @ 21:38Version 1.4 of the Gallery2 Plugin has been released!!
The Gallery2 Plugin is a full featured plugin that provides integration between your b2evolution blog and gallery2. It supports single sign on, and adding images to posts using the Gallery2 Image Chooser.
This version adds support for gallery2 image block widget that enable you to show a random image, recently viewed image, recently added image etc. to the sidebar or page title, anywhere a widget can be added in b2evolution. See the sidebar of this blog for an example of how this looks. The image block widget works in conjuction with the Image block plugin for Gallery2 so you will need to make sure it is installed and activated in gallery2 before you can use the widget.
The Gallery2 Plugin also offers full compatibility with the Lightbox Plugin for b2evolution as well so you can include your gallery2 photos in your posts and display them using Lightbox1 or Lightbox2.
Check out a couple examples of what you can do with the plugin. Enjoy!!!
You can also make text links to images in your gallery.
Download: gallery2_plugin-1.4.zip
Gnucash 2.2.3
2008/01/10 @ 19:03Gallery2 Plugin 1.3 Released!!
2007/12/11 @ 00:51The next version of the Gallery2 Plugin has been released!!
This version fixes a number of problems with different versions of
b2evolution . It should work in b2evolution 1.9.2 and newer. It was
tested in 1.9.2, 1.13.0, and 2.1.0. This version also fixes a number of path issues with previous
versions of the plugin. Paths to your gallery2 installation should be
managed correctly now.
The Gallery2 Plugin offers full compatibility with the Lightbox Plugin for b2evolution as well so you can include your Gallery2 photos in your posts and display them using Lightbox1 or Lightbox2.
Check out a couple examples of what you can do with the plugin. Enjoy!!!
| | ||
| A link to the gallery page for an item. | A lightbox link to the resized image. | A link to the parent album. |
You can also make text links to images in your gallery.
Download: gallery2_plugin-1.3.zip
Gallery2 Plugin 1.2 Released!!
2007/11/07 @ 10:42Version 1.2 of the Gallery2 Plugin for b2evolution has been released!! This release is a simple bugfix from the previous release a couple weeks ago. It fixes a number of bugs in adding images to posts and fixes various messages and improves how the plugin checks for a valid gallery installation.
It offers full compatibility with the Lightbox Plugin for b2evolution as well so you can include your Gallery2 photos in your posts and display them using Lightbox1 or Lightbox2.
Check out a couple examples of what you can do with the plugin. Enjoy!!!
| | ||
| A link to the gallery page for an item. | A lightbox link to the resized image. | A link to the parent album. |
You can also make text links to images in your gallery.
Download: gallery2_plugin-1.2.zip
Gallery2 Plugin 1.1 for b2evolution has been released!!
2007/10/25 @ 02:27Version 1.1 of the Gallery2 Plugin for b2evolution has been released!! This release adds the ability to post gallery2 photos into your b2evo posts using the Gallery2 Image Chooser.
It offers full compatibility with the Lightbox Plugin for b2evolution as well so you can include your Gallery2 photos in your posts and display them using Lightbox1 or Lightbox2.
Check out an example of what you can do with the plugin. Enjoy!!!
Download: gallery2_plugin-1.1.zip
Learning GTK2.0
2007/10/21 @ 13:25Today I've been playing around with writing programs in GTK2.0. This has been on my todo list for a really long time, almost since college, but I've never got around to it. I've revived my old project gorbital and decided to rewrite it using GTK2.0. I originally wrote it in C++ using gtkmm for GTK1.0. But GTK1.0 is long since dead. Even my beloved Gnucash has finally made it to the world of GTK2.0 making it the last application I use that has made the switch (gaim being the first).
The documentation here and the tutorial here are pretty complete and straitforward.
I've also taken the opportunity to get more accustomed with Mercurial and I followed the instructions on how to set up hg on sourceforge and got that working pretty well. You can check it out here.
TextTools 1.14 released!
2007/10/07 @ 20:16Version 1.14 of the TextTools plugin for jEdit has been released! It's the first release since I took over maintenance of the project and mainly includes bug fixes to the "Toggle Line Comment" and "Block Fill Insert" actions.
I recommend the plugin for the "Toggle Line Comment" action alone to those who aren't using the plugin currently, and for those who are I recommend updating as the new version handles line commenting of multiple selections and blocks of text better.
You can download the plugin here or through the Plugin Manager in jEdit.
Lightbox Plugin 1.3 Released!
2007/08/11 @ 13:04The next version of the lightbox plugin for b2evolution has been released ! !
The Lightbox plugin allows you to create posts with links to pictures and display them using Lightbox or Lightbox2. You can view an example of the lightbox plugin above. This release added support for Lightbox2 and some bugs regarding matching of urls in the [lightbox] render string. Matching of urls should be more forgiving especially with relative urls.
Lightbox2 is not enabled on this site but you can see examples of it's use on the Lightbox2 homepage.
Download: lightbox_plugin-1.3.zip
Gallery Single Sign On Released
2007/04/28 @ 16:10Gallery Single Sign On is a b2evolution plugin that enables this site, and any other b2evolution/gallery2 site to have single sign on between the gallery and b2evolution.
More information about the plugin can be found here.
Using this plugin users can register with b2evolution and automatically have a gallery user created for them. And once logging into b2evoulution the session is carried over to gallery2. So the user will not have to log in twice and maintain two users.
When using this plugin, gallery2 admins will need to put their gallery into embedded mode. This is explained some on the gallery website. With the plugin I have included a script that will allow gallery admins to replace their existing standalone gallery installation with an embedded gallery that performs single sign on with b2evolution. If combined with gallery's url rewrite plugin the embedded gallery will work exactly the same as your existing stand alone version.
Here is a initial release: gallery_plugin-1.0.1.zip
prefix
2006/06/08 @ 00:46For what it's worth I started a new project on sourceforge for my past project prefix and I released a new version. It's a prefix (polish notation) command line calculator. It's kind of an exercise to learn how to develop and distribute software in python. It's also a useful little utility. I use it to do quick calculations when I'm feeling averse to pushing buttons. Anyway, I should hit the sack.
It's late and I've got more work in the morning. ![]()
jsXe's webpage
2006/04/30 @ 10:49This week I updated jsXe's webpage. It looks a lot nicer now and makes use of php so that the menus and stuff are defined in only one place. That makes it a lot easier to mantain.
For the new design I just used a regular webpage with css to apply the styling. It's remarkably simple and flexable. I'm not a web guru but I see now why a lot of people find this area rewarding. It's a lot of fun to make pages using css stylesheets. PHP is also pretty fun though I wonder what it's like to create a full blown application with it. I've edited some scripts for my website but nothing substantial so I'm devoid of real php experience. Though I know enough about it to be dangerous and learn rapidly if I need to. ![]()
jsXe 0.4pre3
2006/02/20 @ 19:19Yesterday I released jsXe 0.4pre3 ![]()
Hopefully I'll be releasing new versions more regularly in the future. It's hard to maintain focus on Japanese study and jsXe and everything else all at once.
I really need to redo the website jsXe website soon. It's pretty crappy. The guy that designed it did an Ok job but he didn't work on it for very long. Maybe I can come up with some design requirements and have someone work on it. I'm could do it but I'm not a web guru and the website could use a bit of php scripting probably.
Anyway, I have study group with friends tonight so I gotta study a bit.
New features in Jsexy... err jsXe
2006/02/17 @ 13:37Been busy this week but I managed to add cut/copy/paste support to the tree view in jsXe cvs. Though I pulled my hair out a bit and there are some limitations, it works pretty well.
I just wish there was more interest in the project. It would help me justify the time that I put into it. I think jsXe could be a cool project and I have some good ideas for it, like a schema editing view, I feel like I don't have enough time to devote to it to make it a really cool, useful program. I guess the folks that don't need a professional XML IDE just use a text editor but jsXe can't compete with professional tools like oXygen and XMLSpy with their XSLT debuggers and professional tools. :-{
I guess I've thought about making jsXe a platform for developing plugins that allow you to do develop easily with multiple XML applications at once , and I've implemented some features in that direction already, but again that's rather ambitious and I don't think I have the time. And besides then jsXe wouldn't be the Java Simple XML Editor anymore. It would be a huge, featureful development environment.
Lots to do this weekend
2006/02/11 @ 11:54Hey all, this weekend I'll be spending quite a bit of time on the computer. This weekend I'll be adding a few new minor features to jsXe. I haven't worked on it seriously in months. Almost as long as I've been talking to Reiko. I wonder if that had something to do with it.
Anyway, I've added some DTD/Schema validation features and I'd like to expand those a bit. I'd like to add in some built in completion features for some popular XML applications too (Schema, XSLT Stylesheets, Apache Ant etc.). I also have to start seriously thinking about working on other plugins/views for jsXe. Namely the Schema View. Though sometimes I feel like it's all for naught since noone really uses jsXe but, even still, I do enjoy working on it.
I'm also trying to get back into C programming a bit. I've been mostly looking at programming with GTK+ 2.0. I've been creating some demo programs and as a learning exercise I may upgrade gorbital to GTK2. However, learning this stuff is lower on my priority list and I may not get to it this weekend.
I also would like to do a bit of upgrading on the machine as well. For a while I've been using the 2.4 series of the Linux kernel and XFree86, the second of which has been replaced by X.org in the community. Part of the reason I've been running legacy software is because I use GATOS which allows the use of some of the TV input/capture functions of my ATI All in Wonder Radeon. But I noticed recently on the GATOS site that newer versions of the Linux kernel in the 2.6 series and the new release of X.org 7.0 handle the All in Wonder Radeon's hardware acceleration and TV input correctly out of the box. I also recently had some problems with using virtual terminals on my current version of the Linux kernel and XFree86 so I think I'll be working to upgrade to both the Linux kernel 2.6 series and X.org this weekend. Needless to say (or maybe not), I do everything the hard way on my system so this may or may not be a trivial feat.
Anyway, If you want to send me some words of encouragement then I'll probably be online all weekend.
jsXe
2005/03/17 @ 19:56I've been working a lot on jsXe recently. Mostly on the schema view, bug fixes, better namespace support etc. The schema view is going to look pretty cool when it's farther along. I've got an early screenshot of the schema view up on the jsXe website. Hopefully I'll have a releaseable version in the next few weeks.
There is literally too much work to do on jsXe in general. Just the normal tree view, source view, and schema view will keep me busy for a good time to come. And I've got ideas and more views planned. Plus, writing an XML editor in general is hard. Lots of quirky XML gotchas. I'd like at least one other decent developer to work with but no one is very interested in the project. I suppose I've got some ways to go before I'll have folks willing to use jsXe and test it out, submit bug reports, and submit code.
jsXe 0.3pre15
2005/03/12 @ 15:02I just released jsXe 0.3pre15. This version has plugin support so I'm gonna do some work on the schema view plugin I've been thinking about. I want it to be pretty much a clone of the schema editor in XMLSpy. I'm gonna use JGraph to implement it. It should be pretty cool and might actually get more people interested in using it.
After that I'm going to spend some time on building in some more DTD support and enhancing the source view which is really lame at the moment.
Grr
2004/08/10 @ 18:21The last few days have been pretty boring. We had an all day division meeting at work. It was interesting to get updates on other projects going on in Software Development but it's a WHOLE DAY. Needless to say I didn't get any actual work done.
I pretty much gave up on the work I did over the weekend on jsXe. This decision stems from the fact that it's just too hard to maintain that code and do what I want. And that difficulty is there because of the limits to the XML DOM interface in java (and the length of time it has taken to finalize DOM3). There's only so much you can do. I can't register a change listener with a Node for instance (which is what I want most).
DOM3 looks better than DOM2 but I'm still missing how I could create my own implementation of the Document interface and have an existing parser like Xerces parse an XML document, constructing the DOM using my implementation of Document. How is the DOMImplementation interface useful if I can't use existing parsers? So not only do I have to create an implementation of the Document interface myself but I have to create my own LSParser? One that uses my Document implementation. I could create my own imlementation of the Document interface but write my own parser? That seems like too much.
I really don't want to make jsXe too dependent on Xerces. I also don't want to write my own parser. I think I'm just going to get something working for the time being. I can at least work on other areas of the program.
Anyway, got to get ready for japanese meetup! mata ne
Another Saturday Night and I ain't got nobody...
2004/08/07 @ 18:49I just finished separating the gui component for the tree view in jsXe. I wish I had done more today. There's always tonight to make up for it.
I'll probobly start watching Heibane Renmei tonight tho. I'm not sure if I'll like it but we'll see. Right now I'm going to head to the store to buy some vegetables to make food because I've waited too long and I'm starving.
Workin' on jsXe
2004/08/07 @ 09:32Workin' jsXe for most of the day today. I'm trying to separate the strait gui components for the different views from the editor specific parts. I didn't see the necessity for this at first but a few projects have used code from jsXe and basically rewrote parts of it. I would rather they used specific classes (the gui components) and wrote their own logic to integrate it into their application.
After that I need to get the find dialog working for the source view. Then implement other random features like cut & paste in the tree view. Then on to creating plugin support which I'd like to get around to soon.
Speaking of plugin support, I took another look at JGraph yesterday. That project is super sweet. The diagram components look good and work well. I can't wait to use it to create a schema designer plugin/view.
Jasper Reports
2004/04/16 @ 22:06In my search I came across JasperReports, which is an open-source framework for creating printable reports. It uses XML as a way to define reports and has some nice viewers for the reports. It seems like an interesting project and might apply well as a future plugin for jsXe.
Calm Before the Storm?
2003/12/20 @ 22:27I'm not sure what it is but life has been pretty boring as of late. Besides working on jsXe, working and a little reading I haven't been doing too much for the last week or so. It does seem pretty wierd that I would be bored just before christmas and leaving for Japan. I'm going to be totally busy for the next month or so but right now I'm stinkin' bored. Oh well. Maybe I'll watch a movie. I guess my bordom can't last too long since tomorrow I need to go shopping. Yay. My favorite thing to do. *sigh*
Anyway, I plan on updating this at least some while I'm in Japan. So for the few of you that actually read this come back and check for updates.
jsXe needs some love
2003/12/14 @ 16:05Well, today is pretty much devoted to working on jsXe.
I haven't worked on it very much in the last few weeks. I guess I've just had things get in the way of working on it. I still can't fathom how some project leaders manage to get 20+ hours a week in on their projects and still have a 40+ hour day job. I'm trying to arrange my time so that I can devote more energy to jsXe but so far I'm not satisfied with the results. If anyone has any tips please tell me.









