#5 dexonline – Approximate search using trigrams

Nothing special in the last 2 weeks, due to the fact that I had 12 days off in which I was abroad. First, I was in Hungary with my highschool teachers and a group of 40 students for a week, and the next day after I arrived home, I went in Vienna for 4 more days with some friends. It was real fun, we have visited lots of interesting places and made hundreds of pictures.

But back to work now :) . In this period I analysed the log of the approximate search queries, and I concluded that, despite the fact that the average search time takes a little bit longer than I expected, 54% of them return at least a suggestion of correction, which I think is pretty good, considering that before, the percentage was just 25%. Anyway, the rest of 46% are searches that have nothing to do with the dictionary, like words in another languages or multiple words. If I’d show you some of them, you’ll probabil laugh all day.

I’ve also been making some research on trigrams and I agreed with my mentor on the steps that have to be made further on.

#5 Vmchecker

I have finally finished my user stories [0] and also created some enhanced user stories [1].

I have created the menus for the:

student – [2]

teacher – [3]

administrator – [4]

[0] https://github.com/cosmin1123/vmchecker/wiki/User-Stories

[1] https://github.com/cosmin1123/vmchecker/wiki/Ehanced-user-stories

[2] https://elf.cs.pub.ro/vmchecker-rsoc/menuStudent.htm

[3] https://elf.cs.pub.ro/vmchecker-rsoc/menuTeacher.htm

[4] https://elf.cs.pub.ro/vmchecker-rsoc/menuAdmin.htm

 

#5 [WHC] Weekly Report

Did you know? Blog post’s title states that this is weekly report, but it’s actually posted every 2 weeks :D

Hello, it’s time for another major feature and this time, I’ve managed to get some tasks execution based on workflow diagram. Well, I only managed to execute a task with one data folder as input and one output folder to store the result.

First part of this feature was to figure out de order of task execution. Because all tasks are stored random, and it can’t execute one task if data from another one is required. While I was thinking about this problem, I remembered that we learnt an algorithm: Topological Sort. After few hours all tasks were sorted, and i was ready to execute them.

The second part, execution itself, I used a queue to store task location and command line arguments. This approach allows me easily to modify the way that data are stored in queue, when execution itself remain untouched. Now, the execution queue is a default FIFO that simply take a task from execution order and add all inputs, but it’s not suited for workflow optimization. Another algorithm coming soon.

Also, i must define a way to store outputs, when from task’s output connector goes multiple arrows.

Execution was the last, most difficult part, from now I must fix all bugs,implement missing features, optimize execution and test entire application :)

Cosmin, tell us what you did this 2 weeks :

Hello,

this time I worked at the deploy part for Windows.The point was that:I needed to copy all static dependencies in an install folder specified trough an install wizard.First I needed to know all dependencies, I have found them with Dependency Walker,after that I used a script for Inno Setup Compiler to make the installer.

I also changed the highlight class to load into memory the data and
I began to make the interface for editor settings.

#5 dexonline – Games

The one thing I liked about RSoC was that they implied I should take one week off at some point to actually enjoy a bit of the summer vacation. So this last week was exactly that. I visited Bacau, Bicaz with Cheile Bicazului and it’s Red Lake then Borsec, Brasov, and the surrounding area like Sinaia, Busteni, Timisul de Sus. It was a lot of fun, with a lot of walking the mountains and visiting adventure parcs, and all this in under 7 days. :)

Now getting back to DEX. I corrected a list of mini-bugs that Catalin was kind enough to point out for me. And I added Box-Muller Transform to increase the difficulty level of the game.

I use this to get from the uniform distribution that rand() offers to a normal distribution. This way, the definitions that are wrong will be somewhat similar in meaning with the ones that are correct.

Next I will make the game learn from the player and modify the difficulty accordingly and also add support for sessions of games and results.

#4 Kreator – Intelligent grid system

The project reached quite a milestone recently, I’ve implemented most of the features I’ve hoped for and I’m really proud of the latest addition: an intelligent grid system. The way it works is pretty straight forward: when you select the grid button to draw it a canvas element is added to the DOM and you draw your lines (the grid system only works on horizontal/vertical lines for now) . The end and start points (x,y points) are stored in the localStorage. When you move an element the position is checked against each line and if the element is in range of a certain line it is drawn on canvas and snaps to it.

I am currently working on a File API way to store uploaded images, so you can add them several times in your slides or reuse them in other presentations. The way it would work is that you can drop the images or select them via a input file button and I would use File API permanent storage to store them. I would also add a nice interface for the user to  access the images later and I think it adds up to a interesting feature.

I hope to add that latest feature as soon as possible so I can get on refactoring some of the code and fix the bugs :D

#5 Webkit – Particle System

Hello,

Since my last post I have added a time property, as well as textures. There are some bugs wich I’ll try to resolve  this week. I’m also making a video demo for presenting the particle system with a little information and some examples so that anyone can understand how it works and looks. The video will be on Youtube probably some time this week.

#5 Chat, improved communication

Lots of new features have appeared in last few weeks.

I’ve finished testing my implementation, and right now both types of testing are working (qunit tests for jQuery and ajax stuff and django tests for my view methods). About qunit testing implementation I can say that, after some research, I discovered a git repository about django and qunit[1]. This repository helped me to implement a tester application on the server in order to test my work.

In the last post I mentioned that I’ve made a way for my private-chat-boxes to appear on every page. But there was a little problem because those boxes were set to appear only in the moment when someone was writing to the user or when the user was starting a new communication. The problem was that when the user wanted to change the page all these boxes disappeared. The solution was the html5 and the storage session. I saved on sessionStorage the required variables and on page load I repopulated those boxes.

A new feature contains some spells for the chat. To be more precise there are three of them:

  • A spell that will stop you from accessing the chat page, which means that you will not be able to communicate on global chat, but you will be able to communicate with other players in private.
  • A spell that will stop you to communicate, in private and on global-chat.
  • A spell that will shuffle your words and their content.

After some observation from my mentor Alex about the mess from contact-box code, I cleaned that code and for the moment everything looks pretty well.

#4 dexonline – Approximate search using trigrams

Another post, another implementation :) . This time, the idea remained almost the same, but, with the help of my mentor, the code looks better.

First, instead of the big and ugly matrix that was first initialized from the beginning with all the values, I used some pretty functions for doing that. Unfortunatelly, that was much slower, so we decided to store the distances in another way: two vectors of 26 elements each, representing the coordinates of the letters on the keyboard.

Then, the code was simplified a little, and, after lots of tests, it seems to have no more bugs. Therefore, it is now in production, but for now only 25% of the approximate searches are using it, percentage to be gradually increased in the next period. I also added separate logging, in order to check the results.

So, I can say that this first idea is done and already in use. I will now start thinking about the second one, with trigrams, and a method to test which one is better.

#4 [WHC] Weekly Report

Did you know? Nokia wants to sell Qt, but Digia is ready to buy it, and more important, they asked KDE to collaborate

Workflow Diagram was quite an interesting task for me. After this one i really think that is nothing difficult to do with Qt, and because I don’t want to be just words, I’ll show you a screenshot:

http://i47.tinypic.com/142c1nq.png

As you can see Diagram is fully integrated into WHC IDE. All tasks  and data added with Project Tree will be added automatically in Diagram’s combo Boxes. Also Diagram support:

- Adding new Task/Data

- Select and Move an object

- Delete selected object

- Draw and delete arrows between connectors(green circles)

I must think a way to store diagram in .whc project file and draw it when opening an existing project.

Also, my mentor, Grigore Lupescu, said he will provide me with some code that they wrote last year, and I’ll finally proceed to last and most complex task: Task execution based on workflow diagram (the RUN button for IDE).

That’s all for now, if everything goes nice and smooth I’ll have enough time to fix minor issues and bring code to a release state :)

 

#3 Kreator – More features more fun

The project is going along great. It received a lot of features

  • Google webfonts is now on the list, you can use any font just by typing the name
  • User settings are saved using localStorage and converted in a stylesheet
  • You can add custom CSS to your elements if you want to give them extra features
  • You can now rotate each element through an inline button that has been made available, you can use both an inputted value or a slider to set the value
  • Moving elements is now less laggy and I’m working on a feature where the user can draw his own grid system after which the elements align.
  • I removed templates
  • And fixed bugs

Working with images is still something I have to be working on. I will make drag and drop available on every slide and some feature in which you can add a background image to the whole presentation.