Jump to content

Canardia

Developers
  • Posts

    4,127
  • Joined

  • Last visited

Blog Entries posted by Canardia

  1. Canardia
    I invented a new programming language called Easy.It's faster than C++ (theoretically), since it inlines everything.I see no point programming in C++ without Easy anymore, since the same and better results can be achieved using this new language.It saves also a lot of time and costs when programming, and it should work also with other languages than C++, if they support variadic macros.Here's the Easy home page:
    http://www.siipi.com/easyEasy is still in version 0.0.3.0 0.0.7.0, but it will grow fast, as every new program I make will be written in Easy.
     
    Source
  2. Canardia
    I added multithreading capability to the Siipi speedtest tool, and it showed surprising results: Looping got almost number of cores times faster, but allocating memory got almost number of cores times slower!Here's the test with the first part using 4 cores, and 2nd part using 1 core (as before):Speedtest 1.1 © 2009 SiipiCounting 10 billion floating points using 4 cores...thread 1 begin=25000.000000thread 2 begin=50000.000000Main loop begin=0.000000thread 3 begin=75000.000000thread 3 loop ended at 100000.000003.thread 2 loop ended at 75000.000003.thread 1 loop ended at 50000.000007.Main loop Done. i=2500000050, n=25000.000009, time=4.390000s.Creating and deleting 100 million class objects using 1 cores...Main loop Done. i=100000000, time=13.313000s.Total time=17.703000s.Now the same test with both parts using 4 cores:Speedtest 1.1 © 2009 SiipiCounting 10 billion floating points using 4 cores...thread 1 begin=25000.000000thread 2 begin=50000.000000Main loop begin=0.000000thread 3 begin=75000.000000thread 3 loop ended at 100000.000003.thread 1 loop ended at 50000.000007.thread 2 loop ended at 75000.000003.Main loop Done. i=2500000050, n=25000.000009, time=6.312000s.Creating and deleting 100 million class objects using 4 cores...thread 1 begin=25000000thread 2 begin=50000000thread 3 begin=75000000Main loop Done. i=25000000, time=66.188000s.Total time=72.500000s.As reference the original test, using no multithreading:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410063201, n=100000.000003, time=15.078000s.Creating and deleting 100 million class objects...Done. i=100000000, time=12.890000s.Total time=27.968000s.I found also an interesting article where the author claims that multithreading does not speed things up (which is not always true), but rather stops the system from getting blocked (which is always true, as I've experience with the Lucid engine also):http://www.anomaly.org/wade/blog/2005/08/unintuitive_multithreading_spe.html
     
    Source
  3. Canardia
    I've recently started to use Layers for web apps, and Outlines for Notes apps. And they give a better development speed.However, Layers have also some problems:1) They don't scale with the web browser window like tables do2) When replying with history to an Notes e-mail, layers get all screwed up, so you can only use tables in Notes, but for web apps Layers are still quite goodOutlines for Notes apps totally rock though:1) They expand vertically when you expand their entries (like with subviews). Navigators can't do that2) You can add a nice company logo and lots of other stuff, which you can't do with basic Notes Views3) You can also add lots of other links than just Views to an Outline4) You can sort the Outline entries how you want, and don't need to add some "1. ", "2. " numbering to the view names, and you can also decide which Views you want to show at allSo far I've been under the impression that only Agents, Views, Forms and Documents should be used in Notes for Notes and Web apps, but these 2 elements seem to qualify for further use too (Outlines need of course also Framesets and Pages, but that's OK as they serve a good purpose). Some Notes performance extremists like Chris Toohey go even as far as saying that you need only Documents and Agents (for web apps only), but I see still some benefits with Views and Forms.I guess I'm just a man in the middle, between the Notes 8.5.1 enthusiasts, and the Notes-Fastest enthusiasts. Actually I'm more of a Notes-Stablest enthusiast, so on Windows servers I use Domino 7.0.4 only. On Linux, Domino 8.0.1 seems damn stable (never crashed yet class). On AIX, well Domino is more stable than the OS, so better install Debian on your IBM PowerPC servers.
     
    Source
  4. Canardia
    MinGW 3.4.5 C++ vs. Visual Studio 2008 C++ vs. GNU C++ make quite different quality in speed of executable code.Currently MinGW is 1.902 times slower than VC++, and VC++ is 1.315 times slower than GNU:MinGW default:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410063201, n=100000.000003, time=41.594000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=16.937000s.Total time=58.531000s.VC default:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410063201, n=100000.000003, time=41.609000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=15.469000s.Total time=57.078000s.VC -O3:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410063201, n=100000.000003, time=41.593000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=15.453000s.Total time=57.046000s.MinGW -O3 -mtune=i686:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410063201, n=100000.000003, time=37.437000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=15.766000s.Total time=53.203000s.VC IDE default:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410063201, n=100000.000003, time=15.078000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=12.953000s.Total time=28.031000s.VC IDE -O3:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410063201, n=100000.000003, time=15.078000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=12.890000s.Total time=27.968000s.openSUSE 11.2 GNU -O3 -mtune=i686:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410065408, n=100000.000009, time=16.060000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=5.310000s.Total time=21.370000s.Debian 5.0 GNU -O3 -mtune=i686:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410065408, n=100000.000009, time=16.650000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=4.620000s.Total time=21.270000s.
     
    Source
  5. Canardia
    You served us well for many years, beating all competition, and it shows in your old age and scars of development. To bring back the freshness and speed of the old days, with a modern and powerfully multitalented browser, we say:Welcome SeaMonkey 2.0!Why?Here are some reasons why SeaMonkey is better than Firefox:1) Uses only 56MB on google.com, while Firefox uses 82MB2) Faster than Firefox 3.5.5. Firefox 2.0 was always faster, and SeaMonkey is based on that.3) Firefox 3 introduced frequent crashing, especially when you close and reopen it quickly, but also randomly when you open it.4) Firefox 3 hangs up quite often, taking all CPU load, even on simple web pages with only one instance running.5) SeaMonkey has also e-mail, graphical HTML editor, and IRC built-in. Still it uses less memory than Firefox.6) Firefox takes sometimes 10-20 seconds to open certain Ajax based chats on forums.7) SeaMonkey runs on Windows, Mac, Linux (just like Firefox).8) It has less security holes, and is less attacked (since most attackers focus on IE and Firefox).9) Firefox takes over 30 seconds on first time to open when I start my PC. SeaMonkey takes 7 seconds.10) It has collapsible toolbars, like Netscape had. It has collapsible and resizable sidebars, just like Notes 8 has!11) It has profile switching! This is very useful for web developers, as they don't need to use different browsers for each user, or close all browser windows to switch a user.12) It has theme switching.13) It has a site navigation bar.14) It scores 93/100 on Acid3 test (same as Firefox 3.5.5, but IE8 gets only 20/100, and IE9 gets 32/100): http://acid3.acidtests.org15) It has no home button (yes, that's a benefit, read on...). I was at first confused and thought, that cannot be, it's a useful button! But then I thought about it more, what is it actually? It's just a clickable item in the browser. So I figured, I can just as well put my new home button as first link in my bookmarks sidebar (F9, not Ctrl-B like in Firefox). Then I have all clickable sites in the same place, and don't need to move far distances with the mouse to the home button. Play it in your mind, how you navigate to the links and to a home button near the navigation buttons. It suddenly feels very unpleasant to have to use links in different locations. It feels like I have to switch to a different thinking routine, and that's stressing.16) It has probably a lot more benefits over Firefox, but I just started using it an hour ago :)17) Pressing Ctrl-U gives you a adhoc-realtime source display of a web page. You can update the source by refreshing the window. You can't do that with any other browser.It's not so far fetched for (ex-)Firefox lovers, as Mozilla features them side by side, although you might notice that they say that the all-in-one Mozilla suite is no more, so what to choose? (the choices are alphabetically sorted, to avoid any bias):http://www.mozilla.org/projects/browsers.html
     
    Source
  6. Canardia
    Today I tried to make a simple web page using the Domino Designer 8.5.2FP1 XPage design element on a Domino 8.5.2FP1 Linux server. Getting to know how it works is pretty easy, and I didn't need to read any documentation.
    I made a Form with a Subject and Body field, and a View which shows the Subject, then I made an XPage which uses the Form as its Data Source.
    Then I found some good and bad sides about XPages:
    The Good
    The Bad
    1) It's quite easy to learn how to use XPages, as the UI makes sense. It's pretty close to Visual Studio also.
    2) The design element toolbar is nice, and you can drag and drop any design element to your XPage.
    3) You can easily connect fields from Notes Views and Notes Forms with visual design elements.
    4) A RichText type field activates CKEditor automatically, and it saves it as Notes RichText so it can be visually seen in the Notes Client also. Getting rid of the IBM Oracle Java RichText applet was a very good decision of IBM. Now they just have to get rid of the rest of IBM Oracle Java in Notes/Designer/Domino and things would be faster and better than ever. CKEditor rocks hard!
    5) XPages have many useful premade actions which you can use in Buttons, for example Create Document, Edit Document, Toggle Read/Edit mode, Create Response Document, Delete Document.
    6) The design elements have a nicely structured Data/Style/All properties tree view, from which you can visually change many CSS tags, JavaScript events, Notes functions, etc....
    This makes visual working effective and fun, even when it's only visual coding, as the visual output is a different issue.
    7) You can integrate standard JavaScript libraries visually into XPages, like Dojo, JSon, REST, etc....
    1) The visual layout in Designer does not match the visual layout in SeaMonkey or Notes very much. I get a much closer match with SeaMonkey's Ctrl-E visual editor, from which I can copy/paste individual design elements into a Notes Form for further processing. I thought that maybe the main reason is the difference in the default settings of SeaMonkey/Notes/Designer, and by adding a CSS stylesheet, the visual output would match closer in all clients. A stylesheet didn't help either, and Designer still shows the HTML page completely different than the browser. I found a workaround though: adding computed fields with HTML code on the XPage around all XPage design elements solves the problem, and I get a decent browser output.
    2) The HTML/CSS source code is calling some XSP JavaScript class, and it's impossible to edit or analyze the page with SeaMonkey afterwards, since there are no div tags or any other HTML tags. This is not very compatible with anything, and makes development harder. It seems there are divs after all, but they don't support the position:absolute style.
    3) The fact that CKEditor saves RichText as Notes RichText has its bad sides too. You can't correct errors in the HTML code when the transformation goes wrong. Also the Source button in CKEditor is missing, as well as the Layer (=div) button. Maybe there is a hack to make it save as HTML? Fixed: It actually saves as MIME/HTML so the HTML source code of the rich text field is intact, this is great!
    4) When I made a very simple XPage with only a Subject and Body field, Domino Designer managed to mess up its own XSP code and caused 2 errors which broke the XSP compiler, and the XPage could no longer be compiled/updated. I removed manually some duplicate action/save tag in the XSP code and it worked again.
    5) When Domino is configured to run on port 81, and even when I have the firewall opened for port 80 and 81 from my Workstation and Server, the XSP RichText CKEditor breaks when port 81 is used, and only a small textarea is shown. This is however not a real issue, as I need to add some redirection code anyway to redirect Domino back to port 80. I just hope XPages allows such redirection, like the $$Return field in Forms does, or the Print statement in WQS LotusScript agents. I wonder why Domino even tries to force the user to port 81, when the web page was opened from port 80 or no port was specified (which defaults to 80). Domino should not care what is written in its server document, but only look at the incoming URL.
    6) The XPage opens fine in SeaMonkey, when I choose Design/Preview in Web Browser, and it worked first in Notes too, but after I added the Body field, it stopped working in Notes completely, and I only get an error: Item not found. Workaround found: Opening the XPage manually from the server works fine in Notes.
    I would be glad to hear what I did wrong, and how I can get those bad things fixed.
     
    Source
  7. Canardia
    Today I was explaining what the problem with all programming languages today is, that they have all failed, because they are not intented to make results (except Prolog maybe), but rather to aid the programmer to tell the computer what to do. This is a fundamental mistake, since computers should serve humans, including programmers. So the base for a better programming language is to focus on what the programmer wants as result, and let the computer optimize and decide what method is best to implement it.
    This brought me to the next step, that a programming language must indeed only be a medium to listen what the programmer wants, and the programmer doesn't need to know how to do it, as long the computer works within the limits given by the programmer. My initial idea was to have a "English Programming Language", but then I discussed this idea with a friend who was a fan of graphical programming using flowcharts.
    It was obvious that a spoken text based and graphical based approach are both good at some things, but neither is better than the other in all situations. I realized that both are actually parts of some bigger picture, and I realized also that spoken english (like all spoken languages) is only a failure of communication skills, since using a symbol language all people would understand eachother, including the computers. Then I started to draw the bigger picture and came up with this:

     
    Source
  8. Canardia
    I was looking at some old programming languages like COBOL (a business oriented language, and the second oldest language: founded in 1959), Ada, Fortran, Prolog, and few others. My interest was only to see how programming worked in the old days, and if they had any good ideas which I could reuse for the upcoming symbolic visual language.
    When I stumbled upon Fortran, I remembered that some people had said that it's faster than C++, and I remember the funny fact that Intel has the fastest C++ compiler, but still they sell it side by side with their Fortran compiler. That kinda made me curious to see, if the reason why Intel still supports Fortran, is indeed because it's faster than C++, and I was positively surprised when I made some speed tests and in each test MinGW G95 (now also MinGW Fortran, aka gfortran) beat MinGW C++ in performance.
    So far I've been using MinGW C++ because it makes faster code than Visual Studio 2008 and 2010 C++ (and compiles also much faster, like the same program takes 2 seconds to compile with MinGW C++ and 30 seconds with VS 2010), and I haven't got a business case to invest for Intel C++ which might be even faster than MinGW C++.
    And the loop to IBM closes as I found that Fortran was actually invented by John Backus of IBM in San Jose, California in 1950: http://en.wikipedia.org/wiki/Fortran
    My study on Fortran involved learning the language in a few days, and I came up with this chart:
     
    Source
  9. Canardia
    Just fresh out from the press: IBM will drop the Lotus part from the name, because it misleads many people who remember Lotus 1-2-3, Lotus Smartsuite, and yes even Lotus Notes which is often thought as ancient and dead.
    This is very cool, because it removes the long name nonsense and makes it clear that it's a real IBM product, and everyone knows that IBM is the leader in computer technology, mostly on the hardware side, but since the aquisition of Lotus also on the software side, and of course since the invention of Fortran.
    Also a SharePoint killer app will be included out-of-the-box with IBM Notes/Domino at some point. I don't have any details on this, but I would assume it would integrate IBM Quickr plugins in it, without needing a seperate IBM Quickr server.
    As I mentioned earlier on Vowe's blog, I converted from C/C++ to IBM Fortran. I never liked Microsoft C#.NET, because it's slow and bloated (and I just can't understand why someone would use Garbage Collection, since for me it means only that the programmer has no skills and discipline and should not program in first place), and IBM Fortran beats even C/C++ in speed and of course it beats both C#.NET and C/C++ in easyness to write code, thus increasing productivity a lot.
    IBM Fortran for IBM Notes/Domino is indeed a double RAD solution: radical performance combined with radically easy development. Usually they work reciprocally, but not with this approach.
    I have a plan to make Fortran 2008 a sexy and modern language, and it involves several steps:
    1) Establish web site for Fortran 2008: http://www.fortran2008.com [DONE]
    2) Establish IBM Domino based custom forum for Fortran 2008: http://www.fortran2008.com/forum [DONE]
    3) Make a OpenGL and FreeGLUT demo for Fortran 2008, because it seems that nobody has done it before: http://www.fortran2008.com/posts/3D46BEECFB7212EDC22578C200420D3E [DONE]
    4) Implement the most advanced realtime 3D engine for Fortran 2008 [Coming in 2011-07-30]
    5) Implement IBM Fortran API for IBM Notes/Domino [Coming in 2011-09-30]
    6) Continue implementing and supporting several other essential high quality libraries for Fortran, like sqlite3, sdl_net, etc... and make easy to follow tutorials so that even beginners can understand them.
     
    Source
  10. Canardia
    I have developed my own forum software for Domino for some time, because I was always shocked with the basic lacks of functionality of conventional forum softwares like phpBB, vnboards, Invision Power Boards, SMF, etc.... For them it seems normal that all messages are lost when the forum software is updated, and they just eat it with a bitter taste in their mouth. They also take happily backups every day, but most of the backups fail because of some misconfigured ftp accounts.
    For someone who has worked with Domino that is absolutely not acceptable, since in Domino the database design and data is completely isolated from eachother, so no data is lost ever. And a backup is a backup in Domino, it's a file, and not some SQL mess which only simulates the actual data.
    So far I have used my Domino forum template in 3 different forums:
    http://www.toiveet.fi
    http://www.fortran2008.com/forum
    http://www.wishforum.com
    And with this latest one, I have started to make it like a SharePoint template, so you can easily just make a new site and it works, everything is parametrized in a simple Parameters view.
    IBM is also developing something similar, but I doubt they can make it as fast as I can
    When it's completely ready, I will also upload a public free version to OpenNTF, since that's the nexus for standard Domino templates, and supported by IBM too.
    All people who have seen the forums have thought it's not a real forum. I think it's because they are used to lots of spam and unneeded features, and they can't imagine that you can make things also elegant, kinda like google.com or an Apple device.
    So far the forum template has the following features:
    1) Posting as Anonymous user (can be disabled if wanted)
    2) Posting as Anonymous user, but impersonating someone else (can be also disabled)
    3) Logging in without registering (the forum registers you automatically and instantly (a secret Domino feature )
    4) Uploading files to any post or into your forum profile document (also short links work).
    5) Streaming OGG files directly (needs a little Domino httpd.conf hack)
    6) Dynamically scaling to any screen resolution
    7) List of latest modified topics (not a spam list of each post)
    8) List of deleted posts
    9) Undelete button
    10) CSS 3.0 oriented visual layout
    11) Single file database design (allows easy backups and offline working)
    12) Fully parametrizable via a simple Parameters view
    13) Support for root URL and sub URL forum home locations (for example: / or /forum)
    14) Library area for structured sticky posts, including sublibraries
    15) News area
    16) Embedding of any HTML and JavaScript code (can be disabled)
    17) CKEditor integration (can be disabled)
    18) Fully modifiable design and code and using CSS and LotusScript
    19) Free and paid support (including custom modification wishes)
     
    Source
  11. Canardia
    It just came like a lightning from the clear sky, and illuminated us all.
    I can't remember to have ever seen such a great success in concept, it's so unbelievably thought troughout.
    All the details you experience, all the things which just work like they should have always worked in other systems.
    Everything is real, the people, the talks, the lifes, the avatars, the celebrities, just everything. The Google+ system leads it to be that way.
    It's simply amazing, and very valuable.
     
    Source
  12. Canardia
    We can use Apache as frontend HTTP server running on port 80, and Domino on port 81, so that users can access both Apache and Domino pages via port 80 only.This is done via the Apache Rewrite Engine, but until now it caused one nasty problem: When doing a submit on a Domino page, then Domino would add the port 81 to the URL, and the user could not access that page, if only port 80 was opened to the internet.I found a solution how to overcome this Domino's problem, by adding Apache Reverse Proxy Engine to the httpd.conf.It's very simple to setup, just add these lines at the end of your Apache's httpd.conf file, and replace the IP: 1.2.3.4 number with your internet server's IP number or domain name.In this Rewrite setup, I made it so that all .php ending URLs are handled by Apache, and all other URLs by Domino. This gives us the possibility to add php5 and sqlite3 code to any Domino site.
    ProxyRequests OffOrder deny,allowAllow from allProxyPass / http://1.2.3.4ProxyPassReverse / http://1.2.3.4ServerName 1.2.3.4ServerAlias 1.2.3.4DocumentRoot "D:/Apache/htdocs"DirectoryIndex index.html index.php index.sh default.jspRewriteEngine OnRewriteCond %{REQUEST_URI} "!.php"RewriteRule ^/(.*) http://1.2.3.4:81/$1 [P]The above ProxyPassReverse setup will now return all submitted pages to http://1.2.3.4/:81/ (yes, that's intentionally a malformed URL), and this allows us now to redirect the malformed URL via a Domino Web Configuration document to the wanted port 80 back.For this we create a Web Configuration document like this:BasicsWhat do you want to setup:URL-->URLMappingIncoming URL path:/:81/*Replacement URL string:/*That's it, now you have a fully working Domino running under Apache!PS.If you haven't setup Apache before, all you need to do is to install it, and uncomment the following lines from httpd.conf, to enable the Rewrite and Proxy engine:Uncomment line 110, 115, 118:LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_http_module modules/mod_proxy_http.soLoadModule rewrite_module modules/mod_rewrite.so
     
    Source
  13. Canardia
    Add CREATENOW parameter to LEO's Framework::Framework() and Engine::Engine().
    Expand hybrid fpscontroller2.lua example
    Also try to split it into universally reusable thingoids
    [*]Make some cool dungeon with 3DWS
    [*]Write a short tutorial how to create a distributable game (including built-in C++ RunTime)

    Include a game launcher and updater in the tutorial
    [*]Write also a mini game while doing the tutorial
    [*]Try to get a ragdoll physics character controller working
    [*]It could be used also for n-pedal monsters

    Realistic movement is not important in first phase
    [*]Make physics based 3D emitters

    They could be used for physics based 3D decals also



×
×
  • Create New...