The following warnings occurred:
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 795 - File: showthread.php PHP 7.4.33 (Linux)
File Line Function
/showthread.php 795 errorHandler->error





Post Reply 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Finally back, and with a new Sagelight-related product
01-11-2021, 02:05 PM
Post: #1
Finally back, and with a new Sagelight-related product
Hello, everyone.

I hope with Covid-19 and the current things happening in the U.S, everyone is doing well.

Definitely, Covid-19 derailed and slowed lot of my plans, but fortunately I was able to find different directions to go, which is why I am finally back on the discussion board.

I am actually releasing a new product called Sagebox, which started because if my plans to get Sagelight into version 5.

While it may not seem like it, the release of Sagebox is directly related to being able to finally continue working on Sagelight properly. Sagebox came about because of Sagebox -- Sagebox is sourced from the underlying engine in Sagelight.

Now I can finally put getting Sagelight back on track into the forefront.


A while back, I was working on Sagelight, implementing version 5. I was also working on other things where I really needed a lot of functions to output, deal with image and other data. I realized that I had all of this in Sagelight, and everything I wrote for Sagelight was specific to Sagelight.

Sagelight is written on a platform I wrote a while back both for consulting and as a commercial product. The commercial part waned (until now), but I kept working on it because I added to it as I built Sagelight.

As I was implementing new things into Sagelight, I realized that everything I implemented stayed in Sagelight, and it would be much better to do things generically. At the same time, I was working on some neural-networking code which I realized I could just adapt the Sagelight core engine (called Davinci at the time) and make something generic.

I then decided that what I really need to do is to make this platform generic so anything can use it, so I can just write any program I want and use all of this powerful stuff I've been developing for years by just calling it up.

There were really two issues:

1. I want things to be generic so that I can use them anywhere, rather then tied to one project and hard to use elsewhere. Sagelight's core needed to be refactored anyway, so this kind of worked out. This all started when I was starting to put in .PNG support into Sagelight. I realized that if I put it in here, I am doing all of this work for just Sagelight alone. What I really need is a platform where I can call all of this from any program as well as Sagelight -- but using the tools I've developed, as they are quite extensive and well-tested. For example, Sagebox has a CBitmap type that encapsulates a lot of code I've written for Sagelight, so I can call some routines and get a safe-to-use bitmap (even if an error occurred) and do all sorts of things with it. In such cases, I can do what I want in one or two lines of code because a very large cohesive environment surrounding it (that is, as opposed to using as-as libraries designed for a singular purpose)

2. I don't want to give out source code to a number of routines, but do want to share them as libraries. For example, I write a neural-network engine I want to share, but I don't want to publicize the code. I really needed a platform where I could put in a lot of the things I've worked on and make them accessible to others. I can decide later if I want to put anything into open source. Some of that also includes putting nice wrappers around current open-source libraries to make them more accessible, such as zlib, png, gif, mp4, etc. so they can be used more easily.


Enter Sagebox

So I shifted my efforts to this more and useful generic platform. It was supposed to only take 4 months, but it took more like 8 (not to mention the time to develop the website, etc.), but it was well worth it: for the 2x time added, I got 3x-4x more out of it.

The original platform was called Davinci. I was going to stay with that, but since it is associated with Sagelight and there is a video-image-editing product called Davinci, I decided to change it to Sagebox. Plus, it fits with Sagelight and the fact that a lot of core routines use a namespace called Sage.

While I was developing Sagebox, I realized that what I had built (and showed to Microsoft, who liked it but were focused on C# at the time) was very comprehensive, but also very fluid. It really just had a few issues. It became much larger than I thought because I didn't realize how much I had built over the years. As I built Sagelight, I wrote everything as reusable code on purpose, thinking I'd get to it *someday*. Thank goodness for C++11 and going forward. I really think it's the last few years with the new additions to C++11/14/17, etc. that make this possible.

As I fixed a couple long-standing problems I had with the core engine -- which I was just doing workarounds with in Sagelight -- I saw how real easy these problems were to fix. I was just focused on Sagelight at the time. Suddenly it all came together in a nice package. Then, when I put in the code to make a console mode program exactly the same as a Windows program, I really knew I needed to release something bigger than I had planned.

The nice thing about being a professional programmer and knowing I had to manage such a large piece of code to write Sagelight is that I, by necessity, had to treat myself as a customer when I wrote the core code. Otherwise it would get out of hand. Again, thank goodness for the latest additions to the C++ language that makes it possible for one person to write so much while still keeping it manageable.

I have just released Sagebox today. Now that it is released, I can start focusing on Sagelight again -- more about that in a minute, because I had a realization the other day about Saglight I want to talk about

What is Sagebox?


Sagebox is a set of WIndows C++ tools to allow programming in Windows very easily, allowing Windows programming as easy as programming a console-mode C++ program. Put another way, it allows C++ programming in the Windows environment as easily as a scripting language, but with the structure, power and speed of C++. I have a commentary on why C++ has matured in so many ways to facilitate all of this in the release notes at (www.projectsagebox.com/release.html)

You can also simply add Sagebox to existing programs (console-mode (i.e. non-Windows), and Windows alike). You can also turn your console mode program into a Windows program with a single switch (a console mode program is just a Windows program with a console mode window anyway).


I'm not going to get into Sagebox too much here, since this board is about Sagelight, but here are the particulars:

The main release documentation: www.projectsagebox.com/release.html (or projectsagebox.wordpress.com)
the main site is at http://www.projectsagebox.com
My e-mail there is rob@projectsagebox.com
The Github project is at: https://www.github.com/Sagebox/Sagebox
Discussion: https://www.github.com/Sagebox/Sagebox/discussions
Youtube: https://www.youtube.com/channel/UCuDgFsV...mdVZ99w2VA


Back to Sagelight

I had a realization the other day. I randomly came across some before-and-after images I did for Sagelight. I realized a couple things, but primarily, I realized how much I like Sagelight and how much it really does. I think the UI defniitely needs to be updated, and I can do a better job of making the location and purpose of the functions better. But, overall, Sagelight has a *lot* of things it does well.

That is the problem. Sagelight does too many things, and some great things get lost. I will be working on that now that I can do things more generically with Sagebox. I won't be releasing Sagelight functions through Sagebox, but since these functions always use utility functions, I can write some of these generic functions as generic tools and keep them in one place. That will allow me to do something I've needed to do for a long time: make separate programs or plug-ins out of many of the Sagebox functions.

x32 vs x64

One of my hangups with Sagelight was that there really is no easy way to convert it to x64 because it has a lot of .ASM/SSE code in it structure in a way that Microsoft won't support -- there is no reason for this, really, and I think it is a backward step by Microsoft. But, I have to deal with it.

Sagebox supports x32 and x64 fully right now, and as I start to align Sagelight functionality with the use of Sagebox, this will allow me to slowly start making Sagelight work with x64.

But, it turns out, x64 doesn't really mean anything just yet. Yes, you can allocate more memory, but that isn't a problem for most people that would ever use Sagelight, and the speed doesn't suffer. That being said, certainly some things will fair better with x64, if only because you can use more registers, allowing the CPU to cache more, which is at the heart of the purpose of most Sagelight routines in .asm code.


Next Steps with Sagelight

Last year, I put out Sagelight for free, but I never really pursued it. Covid as well as my realization that I needed the generic Sagebox platform to start building Sagelight again made things go a lot slower. But, a lot of people have that problem these days. On the other hand, because Covid pretty much shut down a lot of consulting that I do, I had the time to work on Sagebox.

Thanks for all the donations. I appreciate that, and now I can put that to work and look for more of a place for Sagelight. I don't know if being free really is the best choice. I may put it back for $20 or so, not sure yet. I need to make sure those with licenses don't have problems.

Either way, I will be putting more information out there about it and basically trying to get the word out so that people even know it exists.

I still have to decide whether I want to work on it from within, or perhaps start a new UI and just start adding the current functions to it. They both have their advantages: building on it as-is would be faster, but to rebuild it through the Sagebox platform would take longer, but eventually make it much more useable as a while program and in pieces. I will decide how to go about it shortly.

The main issue is getting an updated UI and going from there.


Anyway, that's about it. Thanks for being patient. Now that Sagebox is out, Sagelight and Sagebox are on par with each other. I will be spending the next little while organizing Sagelight and exploring its strengths.

Rob
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
Finally back, and with a new Sagelight-related product - sagelight - 01-11-2021 02:05 PM

Forum Jump:


User(s) browsing this thread: 1 Guest(s)