Jump to content

Canardia

Developers
  • Posts

    4,127
  • Joined

  • Last visited

Blog Entries posted by Canardia

  1. Canardia
    Since the end of life of Notes/Domino 7 is coming in 2011-04-30 according to Ed Brill: End of Life for ND7, it's a good time to review the benefits of the two best Web Database platforms available on the market today: LAMP (=Linux Apache MySQL PHP) and Domino.
    1) LAMP database design can be edited with any text editor remotely, even with vi via secure shell (SSH). Domino Designer 7 and Notes 7 work fine, but not Domino Designer 8.5 or Notes 8. Domino Designer 8.5 is written in Java and is thus ridiculously bloated, slow, buggy and exposes lots of security holes.
    Notes 8 crashes when opening documents which contain HTML code, while the same document opens fine in Notes 7 and Notes 8.5, although some of them crash also Notes 7, but Notes 8.5 doesn't crash on any of them. Android got rid of Java in their OS, and users are praising the smaller memory footprint of 30MB and the incredible raise in speed due to native C++ code. OpenOffice uses Java also, and is a bit slow, but by miles not as slow as IBM's Java engine, which you can experience with Domino Designer 8.5, Notes 8.5 and Symphony.
    Although many things can be done with a graphical design in Domino Designer, the graphical features need to be replaced with LotusScript code when the application needs more features and customization. If you've ever worked with a simple application ready web server like Quickr, Sharepoint or Ruby On Rails (which are all horribly slow and inflexible compared to LAMP or Domino), as a developer you will love systems which are exactly the opposite and have thus full programmability and speed, and easy customization support, even if they don't have any ready apps.
    Hmm, actually this is a good question why does Domino not have any ready apps, or does it, if you count openntf.org? It's just not marketed as such by IBM. I think IBM should understand what collaboration really means, it means that the community does eventually official things, and not only IBM. A half point goes to LAMP.
    2) LAMP combines HTML and server side code in the same php document. This makes coding very easy and convenient, while in Domino Designer you need to juggle with a WebQueryOpen and WebQuerySave agent, which usually needs then more code and visual design elements to handle all different situations - you have to place additional fields in the Form and address them in the LotusScript code.
    This point is a draw though, since in LAMP you need to code everything, while in Domino Designer you can avoid some coding, and despite that it usually needs some more effort later on, it also saves time.
    3) The Domino 8.5 server has had known and fatal bugs for years, and although IBM knows about them, they haven't been fixed. One of those fatal bugs is for example that LotusScript WebQueryOpen agents keep running forever, until the memory is full, when the user closes the browser. The only workaround is to make a HTTP restart every night. In Domino 7 this problem does not exist.
    Another fatal bug is that chronos.exe crashes the server, however this can be fixed by deleting chronos.exe (speak: move it to a backup subdirectory, as you might need it for the next incremental installer), as it is some remain from Domino 1.0 where it also crashed all the time. And a third fatal bug is that compact increases the database size. This works fine in Domino 7. And a fourth fatal bug is that DAOS enabled databases with attachments cannot be copied to a Local file system when they are restored to a backup server first. This works also fine in Domino 7, since it has no DAOS.
    Domino 7 vs LAMP would have been a draw, but since businesses are forced to upgrade to Domino 8.5, this point goes to LAMP, as it has no such fatal bugs. In a similar situation, where Microsoft's Windows Vista was a plain failure for businesses (there was no business need or even benefit to upgrade) and Windows 7 (better than Vista, but it made itself required by ending the OEM Windows XP support), there is still support for Windows XP until year 2020, because that is the end of life of Windows 7 and the Windows XP downgrade is part of Windows 7, so it extends the end of support of Windows XP equal to the end of life of Windows 7. I find it a bit ironic that Microsoft has now better backwards compatibility, while this was the ace card of IBM over Microsoft for decades.
    4) LAMP is open source and free, while Domino 8.5 is closed source and commercial only. Android won iPhone, Sony/Ericsson and Nokia because it is open source and free. Likewise, the importance of a free version of Domino is to get a bigger market impact and get it more supported. This point goes to LAMP.
    5) LAMP works on 12 hardware platforms, while Domino works only on 5. An important version is the 64-bit Linux version on Intel and PowerPC, and Domino doesn't have them either: FAQ: 64-bit version of Domino This point goes to LAMP.
    6) Readers and Authors type fields and Groups and Roles are a major benefit of Domino. This point goes to Domino.
    7) Love for Lotus and the visual development environment keeps the developers motivated. This point goes to Domino.
    As it stands now, LAMP wins Domino 8.5 with 4.5:3.
    LAMP vs Domino 7 would have been only a 4.5:4 win.
     
    Source
  2. Canardia
    I had some funny idea again, and started to make Leadwerks Navigator.
     
    It's a simple web page which allows the user to choose different paths and areas of information about Leadwerks Engine.
    The deeper he navigates and into the more advanced topics he goes, the higher level he gets.
     
    I have no idea how useful this is, or if the Leadwerks web site will be easier to navigate,
    but at least it's fun to do! :
     
    http://www.siipi.com/leadwerks
  3. 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
  4. 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
  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
    Finally I got the newest Quickr version to work together with the newest Domino version.Before the last version update, I was running Quickr 8.2.0.0 and Domino 8.5.1 and it crashed almost daily.Domino left a 0 byte NSD file behind each time it crashed.Now it hasn't crashed once yet.All SNAPPS apps are also installed and working fine.
     
    Source
  7. 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
  8. 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
  9. 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



  10. 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
  11. 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
  12. Canardia

    Game Development
    I started using Ultra Engine on 2023-01-18. Learning to use the engine has been really easy.
    The documentation is very clear and I can search for keywords I want to learn about. Each command has a fully working example, so I can quickly copy-paste and try the code.
    The installer is also amazingly fast and automatic, and updating to the latest engine is just a click away. Updating my projects to use the latest version is also fully automatic by clicking on the yellow sign.
    The support from the Ultra team is very professional and fast, usually I got a solution and/or bug fix or new feature within minutes.
    Creating a new game project is just one click away, and when I organize my projects by moving them to other subfolders, importing them back is also a click away.
    Now I'm writing an actual game, and while doing so, I'm building classes to implement the game logic. I already made a model in Blender, and it worked directly in my game, using the glTF save option in Blender. Also the physics for the model worked directly.
    This weekend I'm unboxing my Ryzen 9 + Radeon RX6800 laptop, and setting everything up for art, music and game production.
    My tools are:
    - GIMP, for textures
    - Blender, for models
    - WavePad, for editing .flac audio files
    - Reaper, for composing music and saving as .flac
    - Ultra Engine, for making the game using the above assets
    The game will use physics for triggering game logic, for example: if a certain collision occurs, a new set of physics objects will be spawned.
    Some models will have animated color gradients, to simulate dream-like experiences, but who can tell if dreams are real when scientists say it is very probable that the universe is a simulation, made by Ultra Engine ;D
    Today I thought about binaural 3D sounds, they will occur when different physics materials collide. I will also implement sound occlusion, so that when a sound is played behind a wall, it will sound dampened. I even thought of sound reflection, so it would bounce off walls, possibly using an invisible gravityless physics ball or raytracing, but I can probably use reverb/echo effects instead.
    Finally, the scene will be streamed from a database, perhaps using SQLite3, and I found a nice trick how to remove far-away models using a C++ list.
    One thing I really like about the engine too, is that it takes only 4 seconds to compile changes in the game using Visual Studio 2022 Community Edition, and I can even speed that up using game logic libraries and loading parameters from a file.

     
     
     
×
×
  • Create New...