Just did a presentation about my project and it does not feel good. The project is great, flaws in implementation are undetectable))) It was nominated as the best project also. But it still does not feel right.
Probably the problem is my presentation. I did not prepare good enough. Come on! I know this project from the first line of UI code to the last problems in the threads model. I can make a good presentation easily, right? NOOOOO! It seems that I can't. Even if you are an expert in something, you still need to prepare presentation to make a good impression. And this impression about your project matters. You can have an amazing interface, efficient clear code and great user experience but your audience is not your users. People have not tried your application and they do not know that it is good or bad. You must convince them that you did a great work. You must amaze them with a presentation of your features and the technologies you used.
Thursday, April 5, 2012
Monday, March 5, 2012
Code Signing
1. http://en.wikipedia.org/wiki/Code_signing
An article from Wikipedia. Not very good and does not provide a lot of information. But explains the general concepts of application signing and its purposes.
2. http://msdn.microsoft.com/en-us/library/ms537361.aspx
Introduction to code signing by Microsoft. General, no specifics, formal words.... Microsoft style. But one can understand some global purposes of signing from that.
Have not found anything useful yet....
An article from Wikipedia. Not very good and does not provide a lot of information. But explains the general concepts of application signing and its purposes.
2. http://msdn.microsoft.com/en-us/library/ms537361.aspx
Introduction to code signing by Microsoft. General, no specifics, formal words.... Microsoft style. But one can understand some global purposes of signing from that.
Have not found anything useful yet....
Friday, March 2, 2012
Timsort
http://www.drmaciver.com/2010/01/understanding-timsort-1adaptive-mergesort/
Very good and clear article about the ideas under Timsoft algorithm.
http://svn.python.org/projects/python/trunk/Objects/listsort.txt
Original Tim Peterson description of the proposed algorithm and its evaluation.
http://warp.povusers.org/SortComparison/
Good and colorful comparison of standard sort algorithms (without optimization) but does not include Timsort.
Minus of the algorithm is that it uses O(n) space while normal merge sort algorithm uses only O(ln(n)) additional space in the stack (because it uses recursion). May be unsatisfying with really big N.
Very good and clear article about the ideas under Timsoft algorithm.
http://svn.python.org/projects/python/trunk/Objects/listsort.txt
Original Tim Peterson description of the proposed algorithm and its evaluation.
http://warp.povusers.org/SortComparison/
Good and colorful comparison of standard sort algorithms (without optimization) but does not include Timsort.
Minus of the algorithm is that it uses O(n) space while normal merge sort algorithm uses only O(ln(n)) additional space in the stack (because it uses recursion). May be unsatisfying with really big N.
List Sort
A very simple programming problem gave me the idea to look what modern search algorithm is the best. At the moment, I know and have used only merge sort and insertion sort. But I have never tried to compare their performance in different cases (different list lengths, different data, etc.).
After several minutes of search, I found that the insertion sort performs better on small array while merge soft performs better on large arrays and is theoretically better. It takes O(n*ln(n)) time comparing to O(n^2) time for the insertion cost. BUT! Python introduced TimSort in 2002 and have been using it since. As I understood, Android uses it since API Level 5 and a discussion about Java sort algorithm started in 2009 leaded to Java using TimSort now too.
From Wikipedia I understood that Timsort (invented by Tim Tim's_Lastname but described in some paper in 1990s) is an adaptive search algorithm that uses the idea that real world data is usually not random but partially sorted. Thus, it explores different data features and adapt to them. It achieves O(ln(n)) result on partially sorted data and is only 1.5% slower that optimized merge sort on the completely random data.
To be continued....
After several minutes of search, I found that the insertion sort performs better on small array while merge soft performs better on large arrays and is theoretically better. It takes O(n*ln(n)) time comparing to O(n^2) time for the insertion cost. BUT! Python introduced TimSort in 2002 and have been using it since. As I understood, Android uses it since API Level 5 and a discussion about Java sort algorithm started in 2009 leaded to Java using TimSort now too.
From Wikipedia I understood that Timsort (invented by Tim Tim's_Lastname but described in some paper in 1990s) is an adaptive search algorithm that uses the idea that real world data is usually not random but partially sorted. Thus, it explores different data features and adapt to them. It achieves O(ln(n)) result on partially sorted data and is only 1.5% slower that optimized merge sort on the completely random data.
To be continued....
Monday, February 27, 2012
End of Synchronization
Finally finished my Operating Systems project on threads synchronization. Baboons are happily on the right sides. The task was a "Baboons on two sides" problem with a FIFO order requirement. Used classic Readers/Writers solution for the baboons problem and conditions variables to ensure the FIFO order. After the assignment is done it seems so easy))))
By the way, if you are new to synchronization, then check Little Book of Semaphores. It is easy to read and has a lot of solutions to the classic synchronization problems. Although, it is not very high-technology. For example, it does not use conditional variables to guarantee the FIFO order. Instead, it uses tricky constructed queue, which is much harder.
Source code: https://docs.google.com/open?id=0B150EMF9ZCuUbVdtZUU2cW9TNnVQX1B4Yk9zbHRDUQ
By the way, if you are new to synchronization, then check Little Book of Semaphores. It is easy to read and has a lot of solutions to the classic synchronization problems. Although, it is not very high-technology. For example, it does not use conditional variables to guarantee the FIFO order. Instead, it uses tricky constructed queue, which is much harder.
Source code: https://docs.google.com/open?id=0B150EMF9ZCuUbVdtZUU2cW9TNnVQX1B4Yk9zbHRDUQ
Sunday, February 26, 2012
How to Port PThread-Win32
Finally got it!
Also, use Sleep() for Windows (add #include <Windows.h>) and sleep() (add #include <unistd.h>) for UNIX-based systems.
- Put your .h files (pthread.h, semaphore.h, sched.h) into $Visual_Studio/VC/include.
- pthreadVC1.dll goes to C:/Windows. Not the best idea but I am out of time and this works.
- pthreadVC1.lib goes to $Visual_Studio/VC/lib. Also, include it in the Linker. Project Properties -> Configuration Properties -> Linker -> Input -> Additional Dependencies. Add there pthreadVC1.lib.
Also, use Sleep() for Windows (add #include <Windows.h>) and sleep() (add #include <unistd.h>) for UNIX-based systems.
Tuesday, September 6, 2011
Rainy in Tampa
Tropical climate cause tropical rain... A had to walk with the dog in the morning((
But in bad weather strange creatures come out) Like this ghost on skateboard))
Subscribe to:
Posts (Atom)