Educational software

Posted by admin on October 18th, 2009

I’ve been working almost 5 years now on educational software in two companies (first Indie Group, now Televic-Education). We mainly created CD-ROMS (that were enclosed with schoolbooks) and online solutions. All those applications were not built from scratch, instead we created a framework that could read in all exercises and hierarchy of the exercises. Those exercises were created in a back end were you could assemble them in folders and export them in a format for our framework (xml) or other formats like SCORM.

I haven’t got any videos yet on those CD-ROMS, but you can see two of our online solutions in action. The first is Edumatic, the first application that was created and which has some 20 exercise types (multiple choice, fill in, cross word, dragndrop, translate, …). It can be used online or exported to be used in CD-ROMS. On the site of edumatic, you can try out an online example of a multiple set of exercises (for each exercise type there are a lot of exercises). Our senior product manager (;-) Piet Santy) also shows an example each day created with Edumatic which you can follow on Twitter –> link. Please follow and try out his examples! Some of his past examples are shown here and here and here and here(demo). Edumatic back end is created in ASP.NET, the front end in Flash (AS2). Together with Christophe Herreman we created the framework for it, but a lot of other persons contributed to the framework, back end and exercise types like Kristof Neirynck(current technical lead), Bert Vandamme, Piet Santy, Sofie Deparcq and others.

Our other product, which is newer than Edumatic, is called Edumatic Exam. It is now used by three customers and has a lot of potential. It’s more an assessment application than an exercise application and has currently some 15 exercise types. We are striving to support all exercise types from Edumatic, but that’ll take some more time (we’re nearly there). Client side is created in Flex, back end with .NET. This application is used by our government to test the knowledge of applicants. Daily there are multiple sessions with hundreds of candidates. We haven’t got a demo online yet, but if you subscribe yourself at Selor, you can practice some of the language assessments with our application (you need to go to Mijn Selor, subscribe and then choose Taaloefenpakket… all in Dutch or French…) Try it out! The product is also online, but currently you can not register for it. That’ll be something for the future. Currently working most on Edumatic Exam are Bert Vandamme, Sem Dendoncker, Wouter Vanden Berghe and me.

Cheers and practice!

<

Oldschool Flashing

Posted by admin on August 2nd, 2009

After some years of Flexing I’ve restarted to Flash. I’m creating a flash site for Peter Platel (know from ‘Kleren maken de man‘) and it has been lots of fun and lots of frustration. Luckily I’ve gotten support from Ward De Langhe, one of the best Flash Developers around! (Check the Art he’s creating with Flash! Awesome!).

Four and a half years ago I started working with Flash mainly to created cd-roms (in a Zinc of Director shell — even more frustrating). After a while you get to know that Flash isn’t always logic. Sometimes I would search hours for a bug just to find out that the bug was in Flash and all you could do is work around it. Other things I remember from working with Flash:

  • Debugging is a disaster because there is no debugger. You had to put traces all around to find a bug and those traces would only appear when you were building in Flash. So SOS logger was used to get some logs when you’re site was online for example.
  • Quite often the library in Flash was like a battlefield after a few weeks of development. And once a battlefield is wasn’t easy to find anything back.
  • Putting code on the timeline in Flash was a way of punishing the developer that came after you… We had projects from a previous developer that were like a puzzle with code all around… we called it ‘name of developer’-code… :-)
  • Creating flash content that would adapt to the size of the stage is a hard one. Certainly when you worked with Flex were Layout Containers are part of the sdk going back to Flash is a adventure. With the help of some basic classes created by Ward De Langhe I created a liquid flash site. Some bugs are left in my flash site but they will be resolved in the near future. For a project I’ve worked on (Edumatic) we even created Layout Containers in AS2 (based on the Layout Containers in Java).

So, this in mind, I went on creating this Flash Site. Now I have:

  • Still no debugger but, but I started an ActionScript Project in FlexBuilder parallel to the Flash project. This ActionScript Project uses assets from an Swf file. This ActionScript project has the adventage that it can be debugged. The flash project still can’t be debugged. Another thing I’d like to try is a Flex Project for creating a Flash Site. I wonder if this will work out… (to be continued).
  • My library is kept clean from in the beginning! If you import graphics from Illustrator, you sometimes get hunderds of groups in groups in groups… I always clean them out first.
  • Almost no code is found in the fla file. All code is in classes, except sometimes a stop() for animations (I could also do this in code but in this case I like it more in the fla).
  • The liquid design isn’t easy when you’ve never done it. For example, if you have a Tween that’s dependent of the stage size and during the tween you the stage is resized, you can get in trouble.
  • Thx to some classes provided by Ward, the site is localized. For each language there’s a Xml file containing the text content.

I’ve tried to use Spring.Actionscript in the project but the Ioc framework needs some classes from the Flex Sdk so I could not compile it. Anyway, to keep the size small of the swf it’s maybe better to leave it out.

Another thing I learned is that it’s a lot of work compared to the result. What seems little work for the customer or graphical designer sometimes takes a lot of hours… But I’m happy with the result for now. The site is far from finished so check it out in the next months as new parts will be added.

<

AS3 – C# String Replace with Regular Expressions and Callback function

Posted by admin on January 15th, 2009

In AS3:

Actionscript:
  1. ...
  2. var regExpDigitString:String = "\\d+"
  3. modified = original.replace(new RegExp(regExpDigitString, "gi"), findSuffix);
  4. ...
  5.  
  6. private function findSuffix():String {       
  7.     var result:String = arguments[0];
  8.     var index:int = arguments[1];
  9.     var input:String = arguments[2];
  10.        
  11.     ...
  12.                
  13.     return result;
  14. }

In C#

C#:
  1. ...
  2. String regExpDigitString = "\\d+";        
  3. modified = Regex.Replace(original, regExpDigitString, new MatchEvaluator(findSuffix), RegexOptions.IgnoreCase);
  4. ...
  5.  
  6. private String findSuffix(Match m) {
  7.     String result = m.ToString();
  8.     int index = m.Index;
  9.     String input = original; //apparently you can't get the original string out of the Mach Object, so you'll need a reference to the original Object in your class.       
  10.            
  11.        ...   
  12.  
  13.     return result;
  14. }

<

Artist with Flash – Ward Delanghe

Posted by admin on November 6th, 2008

A friend of mine, a great flash programmer, creates art with Flash! I didn't want you to miss this:

http://www.flickr.com/photos/v-i-p/3004875027/sizes/o/

Next one I really like:

http://www.flickr.com/photos/v-i-p/3002746743/sizes/o/in/photostream/

Cheers! Lieven Cardoen aka Johlero

<

Using Zinc with Flash9/Flex AS3 Swf’s

Posted by admin on December 20th, 2007

I had a Zinc project which worked fine on PC but showed absolutely nothing on Mac. I just got a nice Window with nothing in it. Even a swf with a simple button wouldn't load on Mac.

After an hour of searching I saw that in a Mac Zinc Project, you can choose the Embedded Flash Control in the Flash Settings tab. If you want your executable to work on Mac, you better set this on Flash 9...

ZincAs3EmbeddedFlashControl

Yeah, life can be hard.

<

Making Service Accessible for FluorineFX

Posted by admin on December 17th, 2007

With FluorineFX you need to add the tag [RemotingServiceAttribute]] to our service class to make it accessible. It means you need a hard reference to FluorineFX in your class.

There's however a configuration setting to make all services accessible at once:

<!-- value="browse|access" -->

<remotingServiceAttribute>access</remotingServiceAttribute>

<

Sending Arrays instead of ArrayCollections in Fluorine & FluorineFX

Posted by admin on December 17th, 2007

In Fluorine:

<classMappings>

 <classMapping>

  <type><![CDATA[System.Collections.Generic.List<T>]]></type>

  <customClass>Array</customClass>

 </classMapping>

</classMappings>

In FluorineFX:

In services-config.xml

<channels>

 <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">

  <endpoint uri="http://{server.name}:{server.port}/context.root}/Gateway.aspx"  class="flex.messaging.endpoints.AMFEndpoint"/>

   <properties>

    <legacy-collection>true</legacy-collection>

   </properties>

  </channel-definition>

<!--

<channel-definition id="my-rtmp" class="mx.messaging.channels.RTMPChannel">

<endpoint uri="rtmp://{server.name}:2037" class="flex.messaging.endpoints.RTMPEndpoint"/>

<properties>

<idle-timeout-minutes>20</idle-timeout-minutes>

</properties>

</channel-definition>

-->

</channels>

<

.NET Invocation guide for Flash Remoting clients AS3

Posted by admin on December 17th, 2007

Finding examples with AS2 to do a Remote Call (Fluorine or WebORB) is easy.
However, finding an example for AS3 is very, very hard.
Here's how you do it (thanks to Ward De Langhe):

Actionscript:
  1. private function getGalleryData():void{
  2.  
  3. registerClassAlias("logics.BLL.CollectionEntity",GalleryVO);
  4. registerClassAlias("logics.BLL.GridRowEntity",GalleryRowVO);
  5. registerClassAlias("logics.BLL.PictureEntity",GalleryImageVO);
  6.  
  7. galleryService=new NetConnection();
  8. galleryService.objectEncoding=ObjectEncoding.AMF0;
  9. galleryService.connect(SiteModel.GATEWAY_URL);
  10. //SiteModel.GATEWAY_URL is url path to your gateway
  11. responder=new Responder(galleryResult, galleryFault);
  12. galleryService.call("remoting.service.CollectionService.GetCollection",responder);
  13. }
  14.  
  15. private function galleryResult(result:Object):void{
  16. galleryVO=result as GalleryVO;
  17. }
  18.  
  19. private function galleryFault(fault:Object):void{
  20. }

We haven't been able to figure aout why ObjectEncoding.AMF3 doesn't work.
Well, it works, but in the result the objects are not deserialized, so you just get Objects...

<

Copying folders on Mac & Pc With MDM Zinc

Posted by admin on November 26th, 2007

Copying folders with the function copyFolder from MDM Zinc doesn't show the same behavior on Mac as it does on PC.

On PC the content of the folder is also copied, on Mac this isn't the case. On mac only the folder itself is copied, but not the contents. It's rather annoying as you would expect the same behavior be programmed by MDM.

If you want the same behavior on Mac then you better use some AppleScript.

Actionscript:
  1. var shellScript:String = "tell application \"Finder\" \r" +
  2.     "duplicate \"" + copyFrom + "\" to \"" + copyTo + "\" \r" +
  3.     "end tell";
  4. trace("EVAFRAMEWORK :: ZincSystemService.as : Executing shellScript : " + shellScript);
  5.          
  6. mdm.AppleScript.setScript(shellScript);
  7. if(mdm.AppleScript.compileScript())
  8. {
  9.     trace("EVAFRAMEWORK :: ZincSystemService.as : Script Compiled Successfully");
  10.     if(mdm.AppleScript.run())
  11.     {
  12.         trace("EVAFRAMEWORK :: ZincSystemService.as : Script Runned Successfully");
  13.     }
  14.     else
  15.     {
  16.         trace("EVAFRAMEWORK :: ZincSystemService.as : Run Error : " + mdm.AppleScript.getLastError());
  17.     }
  18. }
  19. else
  20. {
  21.     trace("EVAFRAMEWORK :: ZincSystemService.as : Compile Error : " + mdm.AppleScript.getLastError());
  22. }

To move a folder, there's no function available in Zinc, so you need to copy and delete. The function deleteFolder from Zinc does have the same behavior on Mac and PC.

<

Evolution Desktop Applications – My Experience Part I

Posted by admin on November 19th, 2007

When I began working in the multimedia business, Director was the tool to package swf's into executables for PC or MAC and having access to the operating system. I never had much experience with Director, only just enough to do the necessary things. Although lots of Director users will probably disagree with me, I think the language lingo was a disaster to use. But Director did the job to open files, write to files, changing resolution, opening internet pages,... I did however get more and more frustrated by Director. It had almost no support, macromedia had stopped development on Director and I did get lots of bugs from customers. Those bugs were reported to Macromedia, but never solved. For me, if you developed everything in Flash, having to use Director to save a few files was too much work, too much problems...

So came Zinc from MDM. There were other alternatives, but none of them supported Mac. Maybe that there are better tools out there than Zinc for PC, but in my experience there are none for PC and Mac. If you worked with Director, Zinc was a fresh breath of air :-) but the future would learn that crappy and buggy had been replaced by a bit less crappy and buggy. We have made lots of succesfull applications with Zinc, and development was easier than with Director, but still there were allways bugs. The support of MDM was rather good in my experience, and you would allways get a quick reply. However, lots of bugs were never solved. Lots of times, when a new build came out, an bug was solved, but something else that had allways worked now didn't anymore. Things like that were very frustrating. Sometimes we had to install a previous version of Zinc to make things work. It's true that Zinc has hundreds of functions which you can choose, but I would prefer less functions but more reliable. Anway, I still think they did a good job, creating something that has to work on all those crappy windows version and on mac doesn't seem easy. The thing that frustrated me most is that until today MDM Zinc has no support for standalone cross database... On the PC side you could use Access db connection, but simultaenously connections on an Access db are limited. On mac no database was supported. So for a few projects we still used Zinc on PC, but Director with V12 database on Mac. This makes creating an applications for Pc and Mac expensive. On the other side, functions that are crossplatform (like copying a folder) do not show the same behavior on Pc as on Mac, so you still need to write seperate code for Pc and Mac. The last downside is that you first had to create the swf, and then wrap it into an exe with Zinc. Debugging isn't easy once you started your exe... Currently MDM states that it is working on a new product called Pandora. There was going to be news at first in May, then in September, but we are now November and still no news. At the forum of MDM things are rather heating up, certainly now that Adobe has released Air. Off course it's more easy for Adobe to develop things for there own product. Criticizing Zinc is easy, but I'm still thankfull that I can use it. With Adobe Air they have an important concurrent, so I hope this will raise the quality of Desktop Application Tools.

Adobe Air : Until now we are still developing with Zinc, but we have done some studies of Adobe Air, and I must say it looks great. Adobe Air needs a runtime, Zinc doesn't, so Zinc has an advantage there. But once the runtime is installed, Adobe Air looks a far greater tool than Zinc. First development is fantastic because you can use the same tool to create packages, debugging is f***ing easy and you have code completion for all of the Adobe Air SDK (Zinc has done someting to support some code completion in FlexBuilder, but it's not the same). Second there's a support of SQLite, a cross-platform database (hell yeah!). But I'm carefull, and future will tell if Adobe Air is a better tool to create Desktop Applications.

Silverlight : I have seen some examples on conferences. Fantastic would be to have a tool as Visual Studio to develop Desktop Appliations. I'm following it, hoping to play with it in near future. I've heard that Mac would be supported, but I would like to see that... Adobe states often that there Flash Player is installed on 95% of pc's, but Microsoft only has to do a security update, and there runtime would be installed on a lot of pc's too... With FlexBuilder3 & Adobe Air, one has a tool to create Desktop Applications and debug them easily. But if I had Visual Studio to create Desktop Applications... But it's hard to talk about something one doesn't know, and hard to trust Microsoft if you ask me.

Other tools that I now of : NorthCode

 To be continued...

<

Copyright © 2007 Johlero – Cardoen Lieven. All rights reserved.