Content Count

Points

Content Count

Popular Content

Hello there, I'm David Tschumperlé, the main developer of G'MIC.
First, I'd like to thanks @null54 for taking the time to port our G'MIC-Qt plug-in for Paint.Net.
Second, I've read all your messages and indeed noticed that the 'Stylize' filter was painfully slow on Windows.
We have investigated this issue these last days with people at pixls.us, and hopefully we should have found what was going on. We were using too much mutex locks/unlocks in the multi-threaded algorithm, which was slowing down everything. I'm working hard right now to fix this issue. I hope I will be able to post a pre-release tomorrow (Friday) with the fixes included.
If you have any questions related to G'MIC, I'd be happy to answer (depending on the amount of free time I have ).
Cheers.
EDIT: The G'MIC-Qt plug-in is a product of the GREYC Laboratory, mainly done by Sébastien Fourey and myself, with the help of many contributors.

(This is cross-posted from the Paint.NET blog ... I may get more discussion out of this over here on the forum though )
It's been a little over 9 months since I left Facebook, and since then I've been hard at work on Paint.NET. (There were two primary reasons for me leaving Facebook: 1) it was way too exhausting, which is also part of the reason I haven't been blogging much for several years, and 2) I really just wanted to focus on Paint.NET for awhile.)
2018
Looking back on 2018, a lot was accomplished! In the 4.0.20 update back in January I shipped a dark theme, which I originally didn't see the point of but now I can't imagine the app without it. After that there was mostly radio silence until I released 4.1 in September. That update had quite a lot of infrastructure changes in it, both in the low-level bowels of my COM interop system (long story…), and in the addition of GPU-powered effects (which was powered using Direct2D, which was dependent on the aforementioned COM stuff). Since then, the 4.1.1 through 4.1.5 updates have focused on fixing a bunch of bugs that have popped up (which has been frustrating), and improving performance (notably for effect loading at startup, and canvas rendering when zoomed out).
2019
What's next though? Well, I'll start by quoting a recent article over at HostingAdvice that I did a small interview for:
After 10 years of working at Microsoft and several years at Facebook, Rick decided to focus exclusively on Paint.NET this year. “That means I’ve gone from having 20% of my time available to about 80%,” he said.
“I’m going to be spending a lot of time preparing infrastructure for the next big wave of features going into Paint.NET.”
To that end, Rick hopes to enhance the user interface with more attractive icons, allow users to install custom brushes, and introduce pen and pressure sensitivity for tablets.
With that, let's start talking directly about what I'm planning and hoping to release in 2019:
App Icons and High-DPI
Paint.NET's UI is quite functional for high DPI systems without any of the layout problems or truncated text elements that have plagued Windows apps since, well, forever. However, that's no longer good enough in 2019. For starters, the app icons are all authored for 96 DPI (aka "100% scaling"), and look blurry at higher DPI settings. Upgrading all of that is a project I've just started working on, and is what the aforementioned article refers to as "more attractive icons."
Beyond that, newer versions of Windows support dynamic scaling (changing the scaling without logging out and then in again), and per-monitor DPI. Right now if you change the system DPI while Paint.NET is open, it won't look very good. Similarly if you move the app over to a monitor with a different DPI setting. This also affects use of Remote Desktop where the remote system's DPI is different, and use of laptop docking stations when the external monitor's DPI is different. These all make using Paint.NET in modern scenarios rather clumsy and frustrating. For instance: when I use my laptop with a 4K screen to remote into my desktop with a 2K screen, it sucks that I have to restart Paint.NET so it doesn't look blurry.
Windows gets a bad rep for having bad high-DPI scaling, and part of the responsibility for fixing that reputation lies with application developers like me. Refreshing the app icons is the next thing I'll be working on, and then I'll upgrade the infrastructure for dynamic DPI (probably over the course of several updates). Thankfully these projects seem to be the “final frontier” for High DPI: once they’re done we can finally bury the hatchet on High DPI bugs.
.NET Core 3.0
Richard Lander's post earlier in the year about .NET Core 3.0 shipping with WinForms and WPF really made my day. The more recent announcement that both WinForms and WPF would be open sourced has fulfilled a long-time dream of mine. I can't wait to fork the ToolStrip classes and migrate them off of GDI+ (this should be a good performance win)
It's clear that, in the long-term, Paint.NET needs to migrate over to .NET Core. That's where all of the improvements and bug fixes are being made, and it's obvious that the .NET Framework is now in maintenance mode. On the engineering side this is mostly a packaging and deployment puzzle of balancing download size amongst several other variables. My initial estimations shows that the download size for Paint.NET could balloon from ~7.5MB (today) to north of 40MB if .NET Core is packaged "locally". That's a big sticker shock … but it may just be necessary.
And, for those who're interested: the move to .NET Core will finally enable a truly portable version of Paint.NET since .NET Core can just be bundled into the local app directory. I've been slowly moving towards "app local deployment" of dependencies anyway; e.g. for the v4.1 release I got fed up with the Visual C++ runtime's installation issues and moved them to be "app local". The security arguments no longer convince me that it's worth the massive hassles for both myself and end-users. The straw that broke the camel's back (so to speak) on this was when the Surface Go shipped with an incorrectly signed version of the Visual C++ runtimes which then prevented Paint.NET from loading at all (remember: the Surface Go runs Windows 10 "S" by default and can only run Store apps).
Improved DDS support
The DDS support in Paint.NET works well, but hasn't been updated to the newer DDS formats that have become more popular. Nicholas Hayes, aka "null54" on the forum, has written a plugin that provides better DDS support (forum link, and github link). This is a no-brainer for integration into Paint.NET so that everyone can benefit from these improvements (and without having to rename files to have a .dds2 extension, yuck!). Paint.NET is used a lot in the gaming biz, so this should help out a large audience of developers in this arena.
Brushes and Pressure Sensitivity
This is the big one. I've been wanting to get to this for years, and it's finally time to get it done. The first thing to happen is that Paint.NET needs an improved selection of built-in brush stamps (currently only "circle" is implemented). Second, custom brushes need to be supported without the use of a plugin. This will bring brushes up to the same level that Shapes is now at. Third, pen and pressure sensitivity is desperately needed and long overdue. I'll be posting more details when this project starts taking shape, and I'm hoping to start on it this summer.
(Keep in mind, however, that pressure sensitivity will require at least Windows 8 or maybe 10: the APIs for this do not exist on Windows 7.)
Expanded Plugin System(s)
I really wanted to ship 4.1.2 with GPU support for effect plugins. However, a high-priority security vulnerability forced me to shelve that at the last minute. Now that I've had more time to think about this, I'd like to revamp the effect plugin system further -- it hasn't seen much love in the last decade. Providing access to GPU acceleration and Direct2D is an obvious next step, but I also have an opportunity to clean things up in this area. Effects can't easily combine (or compose) with other effects, and this makes it really hard to do arbitrarily complex things with them. It's also difficult to add new functionality to the effect system without accidentally breaking other parts of it.
In addition, it's been way overdue for Paint.NET to support more plugin types beyond effects and file types. Plugins should be able to access more than the current layer, and even be able to implement whole-image transforms, or to create a new image (whether from scratch or based on another image that's already open). You can't even write a rescaling plugin for Paint.NET right now! I don't have concrete plans for specifically what I'll be adding here, or when, but it's high up on the priority list. And in the long term, I would still like to add support for tool plugins (something of a holy grail).
Until next time …
This roadmap for 2019 is ambitious, but I think I should finally have enough time to actually realize most of it. Hopefully I’ll be able to blog more in the coming year now that I’ve got more time and energy for it.
Paint.NET is only going to get better as time goes on, and I'd really like to thank everyone for all of their support in making this transition to full-time self-employment possible for me. Thanks for the donations, thanks for buying the Windows Store app, thanks for the crash reports, thanks for the feature requests, and thanks for all of the fish!

I made a leather dice bag to hold all my die. It has this neat leather thong which secures the opening flap and also creates the teardrop shape when closed.
Holds dozens of die. I found the coffee colored d6 cheap on Aliexpress - they are my current favorite.

The Eruption of Olympus Mons ( the volcano, on Mars, 25 km high, the biggest in the solar system) in 5.273645 BC; taken by Ned Kelly when he strayed into a rift in the space time continuum on his now legendary return journey from Merica in 1878 when he received the Recycled Technology award for his Personal Protective Equipment.

I thought some of you would be interested to see @Red ochre's amazing art work
He recently made his own website with all of his art, including sculptures and beautiful works of delicate ornaments.
http://johnrobbinsart.com/index.html

This is a plugin which helps you to create symmetric mandalas and mirrored pictures.
It takes the upper right triangle(as shown in the first picture) as an input and mirrors it to the other ones.
It only works for square images (image width = image height) currently!
Download newest version here:
Mandala Creator.zip
To install just extract the zip and run the installer.
It will be installed under effects in the subfolder Artistic.
Example for 4 Mirror Option
Results
If you enjoyed this plugin and would like to support me, click this button:﻿
Thank you!
Older Versions:
Mandala Creator.zip (Version 1.0)

A very Merry Christmas to Everyone here on the forum. I wish you a Happy Holiday and a wonderful New Year. Don't eat too much and take care when riding your sleighs
Inspired by a recent trip to New York during a snow storm, I made this from scratch in Paint.net. Hope it passes the muster test

This is a draught for a work thing.
Not realy completed but I gotta get it out there else it wont be new year still.
I work in Nimbin, in one of my hats.
Its a house restoration project by the Neighbourhood Centre.
I ripped the lines from a photo but me & Pdn did the rest.
Thanks for the reps Woodsy. I didn't mean to be disparaging mate.
Wood Butcher doesn't have the same negative connotation over here.
Must be because we have no bad carpenters in Australia. 🙂

I wish all of you a Merry Christmas and a Happy New Year 2019.
Thank you very much for the many great plugins, the corresponding explanations and especially for the great help of many members in this forum. Thanks for that.
Greetings from Hamburg/Germany

Alright! As per my recent blog post ( https://blog.getpaint.net/2018/12/26/whats-next-for-paint-net-in-2019/ , which is crossposted here on the forum too: https://forums.getpaint.net/topic/113608-whats-next-for-paintnet-in-2019-x-post-from-blog/ ), I've finally started working on this for inclusion in the next release
I've paid for a license at https://Icons8.com, as they have a ton of Office-style icons that really match, well, Office. And it's not expensive at all. I can use these and @Zagna's SVGs to cover just about everything. There's a few important icons that Icons8 doesn't have that Zagna does have, and I think the whole set is basically there.
The SVGs will be the "source of truth" but they will not ship with the app itself. Instead, I'll use a script to convert them to PNGs of the appropriate sizes and then the PNGs will be included. Parsing and rendering SVGs is absolutely not something that an app like Paint.NET should be doing at runtime -- it's way too expensive to do all that vector rendering. Once I have things set up for 96 DPI and 192 DPI, I can also easily fill in any other scaling levels that are important such as 120, 144, etc. At that point it'll just be a matter of adding a few extra commands to some scripts.
I'm currently writing up an SVG-to-PNG converter that uses Direct2D. There are already solutions available for this but it's also a chance for me to learn how to work with SVG in Direct2D -- even if that means learning that SVG support in Direct2D is broken or incomplete, which is definitely possible.

1) put your car image on the bottom layer.
2) put your style on the top layer.
3) select the bottom layer and hit Ctrl+A, Ctrl+C and Ctrl+D
4) run G'mic and switch to use bottom layer instead of top layer.
5) hit OK button.
It should Finnish around 5 min with those small images. The bottom layer will be replaced with the new image created.
OK, here's one I did earlier. I made the Style layer using a Lightning brush;

These are some examples of ways I've used Paint.Net. Certainly not the only way. These are smaller images. I created all of them only using Paint.Net. They are 8" x 10" photo layouts. The originals are in 300 dpi/resolution and can be downloaded from below each image, which can be printed by professional printing companies for photo books, on fabric, on canvas, on a wall sign, or just printing out an 8" x 10" photo using a professional printing process. Change your resolution setting to 300 when using them that way......*but* to print on your home printer and save on ink, keep your resolution setting to its default of 96 and drag these images down to the size of your 8 x 10 inch canvas, while holding down the "Shift" button to prevent the image from becoming distorted.
This will also likely be the extent of my gallery. I just wanted to show others another way Paint.Net is used because there is a big group of people out there who like making things like this. I am not one who likes to clutter a layout with a lot of elements because it distracts from the actual photo. I also don't make these as often as i use to but the other two softwares are not the only kids in town for this type of image creation. Some photos are just fine on their own but sometimes it's nice or fun to use these.
Once an image has been completed with a photo or photos, you can always make it smaller by zooming out and take a screen shot of it, which makes the size of the entire image smaller, too. That can make it easier to send by way of email or text messaging.
I'll be getting pretty busy again and won't have as much time to use Paint.Net but I am excited to see what changes come this year. It's a very cool software.
Here is the download link if anyone wants it.
I used an old vintage Valentine post card and a really old vintage photo. I blended parts of the images in to work well with what I was doing. I found some old ephemera that was, I think, a Song of Solomon but they were beautiful words so I used parts of them. I made the paper heart and frame. This was a lot of blending and transparency use. I used "Fill" and "Bevel" to make the photo frame that matches. The paper heart was from scratch. I love the "Texturize" plug-in and tend to use it a lot.
I used "Texturize" for the background paper. I used different colors along with "Frosted Glass" and "Gaussian Blur" to make the colors in the background. I used some of my shapes from my shape packs to make the clouds and hanging string. I completely recreated an image I saw from a very old vintage Valentine's post card. It was challenging and brushes don't work for 300 dpi setting, as they are very small but it worked out well to make the little guy's hair.
Here is the download link if anyone wants to use this.
This is an example of how awesome BoltBait's "Seamless Helper" seamless tile maker is. It's made digital paper patterns that are very beautiful. I think it's very fast and easy to use for the process. Again, I made the paper heart. They are easy to make. It's all about where to put a slightly darker shading and the shadow blob.
Here is the download link to this layout if anyone wants to use it.
A simple layout for some photos to go into using beautiful words of a poem, credited.
Here is the download link if anyone wants to view this in it's larger size for educational purposes and for personal use.
Just a few simple things can be done to create something pretty. The image blended in to the background is royalty free, from Pixalbay. The rest is blending and using the "Fill" tool to make a "wooden" frame from an image of wooden boards. The flower was taken from Pixabay and cut out of a photo. In the full resolution it looks better and was a nice touch. I couldn't use brushes to make the background look grungy but I did find a colorful grungy royalty free image and turned it into a black and white image then used "Overlay". I used some beautiful words, credited. Using Paint.Net to make something to put your photos in isn't everyone's things but it's something some do find of interest, like to make and like to do. If you want to use this for personal and or educational purposes, the download link is here.
I just threw this together quickly. I have various palm leaves and palm trees and other related tropical images in a shape pack I created so it took no time to put a flamingo and palm tree on there then paint it in. If you'd like to have and use this for personal use the download link is here. I think on this one I used a royalty free image of clouds and blended them into the sky since I couldn't use hi res cloud brushes, but, I tweaked the photo up so much to do the sky the way I wanted it that you can't really tell. There is also a blank one where you can put whatever text you want on it. I even had coconuts on the tree but you can't see them. I used "Texturize" on the palm tree and in other ways. It's a silly layout but some will find it kind of cute.
and finally
A nice way to display multiple photos into one image.
The download link is here.
Hi, everyone. I hope I'm doing this right.
Merry Christmas.
This is a gift to anyone who would like it. The image showing is just a sample with two photos in it. It's an 8"x10" (easy for home printing, if anyone wanted to) layout that you put your photos behind. Just slip two photos behind the two frames. It's just a .png image and also 300 dpi, so to use it, just drag it down to a 96 resolution canvas size if you want, or print it out in 300 resolution. Either one.
There's an additional text that says "Ya Filthy Animal", from Home Alone. It's in the layer .pdn files. You can also put whatever names or last name or words on the car, if you use it. I'm sure some of you can add a lot more fun to the layout because of your awesome PDN skills and creativity.
Oh, and, made entirely using Paint.Net, of course. 😁
Click here for the 8x10" .png single image download
For anyone wanting the layers, I saved them, also. I think there are 16 layers. You can use them, move them around, do your own thing with it, add to it, etc.
Here's the zip file for the .pdn layer files.
Everyone be safe and have peace.
Sincerely, Lydia

Introduction
As G'MIC is now available for PDN, there is now easily accessible alternative to C# for developing filters.
What exactly would be the benefit of turning a PDN filter to a G'MIC filter? Well, here's some few benefits to some users of PDN and especially for those that use multiple applications that use G'MIC.
G'MIC are accessible to the following program - Paint.NET, Krita, GIMP, Natron, Blender . This would mean that you could continue your project elsewhere while still having access to G'MIC filters.
Better filter preservation. To explain this in a easier way, G'MIC by itself is likely going to be accessible for a long time to go, and many filters can also be preserved. Individual filters tend to have a big issue of being lost permanently requiring users to remake filters again or to restore it from a backup. Just look at the dead links due to the forum upgrade in some threads at plugins section of this forum to see what I mean. And if G'MIC sources disappear on the main website, there's likely going to be a person who do have the source code for it and instructions to compile G'MIC for respective softwares, and precompiled versions would also exist elsewhere.
It's an alternative to C# with many syntaxs and option. You would have to read the 400 page documentation for example of G'MIC scripting, and look at G'MIC reference. It even support for loop. For some, this can be beneficial as it can be easier to learn for some users, and G'MIC has a big advantages of being able to make the GUI alongside with $x where x is the variable number being directly connected to the GUI.
The downside is that for those who do not want people to have source code to their filter or want to allow others to modify their filter will have to use the standard #C instead and not even bother with this tutorial at all. You have to share your code to the world if you want your G'MIC filter to be accessible to others, no if and no but here unless maybe you're a developer of proprietary programs (I think the license changed to allow proprietary programs to do so, but I'm not sure, hence maybe.).
That being said, those are the few reasons why you would want to turn a PDN filter to a G'MIC filter.
Resources
https://gmic.eu/reference.shtml - This link refers to everything or almost everything about G'MIC scripting with examples
https://gmic.eu/gmic_reference.pdf - 458 pages of examples and some clarifications of scripting
Tutorial
This tutorial is going to be about transforming basic filter to a G'MIC filter. More advanced ones are possible, but that would require some good amount of understanding of G'MIC scripting, and its syntax. Spaces are critical here.
For basic filter and possibly advanced ones (I'm not sure the extent this can be used with code[local], you can use code[local] filter to test your script first.
This tutorial uses Code[Local] first.
Note 1 - [x] are G'MIC layers
Note 2 - $x are G'MIC variables connected
- Part 1 : Preparation
1. Open Paint.NET/Krita/GIMP with G'MIC installed. Krita and GIMP supports multiple layer output, so you can see how your code works by clicking applies. The [0] is the currently selected, and [n] or [-1] are basically anything below the [0] layer. See debug info is crucial to diagnosing how your code will work within code[local]
2. Copy and Paste a image to be used for testing
3. Open G'MIC. G'MIC can be located by Effect > Advanced > G'MIC-QT
4. Go to Custom Code[Local] filter
5. Go to Part 2
- Part 2 : Making the over-blur script and testing it
1. Read about the PDN effect you are going to replicate [Yes, so you can make a theory on how to replicate the G'MIC filter in theory
2. For overblur, it seems that it uses a blur filter first, and generate the difference between the blur image and the original image. Overblur add the sum of the difference with the blur result multiplied by a variable and the original. Overblur (final_image) = Original + (Blur_Variable - Original) * V1 . That means your filter would need at least 2 tabs on its GUI. More on that later.
3. To create a layer within G'MIC with filter applied within code[local] -> Type in +{Effect}[layer_number] x...z where x...z are all numbers of variables you are going to use. See update24xx.gmic on the appdata folder to see effect. $1.....$inf are placement of each variables that are connected the GUI of the filter they're respective to most of the time.
4. Finally, type in blend[0,1] add to see the overblur effect within the preview. Debug info is crucial for PDN as you cannot output multiple layers in there.
- Part 3 : Making the G'MIC code
Note: The code needs more work, but this is more of a starter code. Completing it and describing it will just more efforts than I want to do.
If you look at update24xx.gmic within Kate text editor, you'd note how the GUI works just by looking at the code of the filter and comparing it with the GUI windows.
All notes, and separators are ignored. $x correspond with adjustable number variables.
Everything must start with #@gui. All the other are just GUI development.
Okay, now to make the filter for real.
1. Open Kate text editor (I'm not too sure on Notepad++ when copy and paste into .gmic found at appdata, haven't tried it.)
2. Copy and paste the code[local] code within Kate.
3. Convert number to variables. The first variable should be $1, and the second variable should $2.
So, it should look like this in Kate text editor. You will copy and paste the final code that to updatexxx.gmic later on, but not now.
+blur[0] $1
+blend[0,1] difference
mul[2] $2
remove[1]
-blend[0,1] add
There, that means you should have at least 2 sliding tabs on the GUI.
4. Type in $@gui _
This should go into top of the code.
5. Now, type in #@gui {FilterName}: {Effect_Command_Name}, {Effect_Command_Name}_preview(0)
where {Effect_Command_Name} is your chosen name for this effect. To clarify, here's a example of what I mean.
#@gui Overblur: overblur, _overblur_preview(0)
That should go on second half top of the code. Every other GUI part of the code here are below this.
6. You can add texts to it by typing #@gui : note = note ("") ; where anything between "" is your text that you want to leave info for users of your filter about.
7. You can add separator by adding #@gui : sep = separator()
8. We are going to use 2 float variable. So this means you should add 2 copies of #@gui : {Name of Variable} = float (default, min, max) below the above line referenced in this tutorial.
9. You can add preview by copy and pasting one of the preview type code. That should go into the second bottom line of the gui section.
10. If you want to credit yourself, copy and paste one the existing credit note and replace it with the correct name and date.
11. After you made your GUI. You can continue on the bottom portion of the code. The code so far should look like this.
#@gui _
#@gui Overblur: overblur, _overblur_preview(0)
#@gui : note = note("Overblur the image")
#@gui : sep = separator()
#@gui : Blur Factor = float(1,.1,10)
#@gui : Multiply Factor = float (1,.1,10)
#@gui : sep = separator(), Preview type = choice("Full","Forward horizontal","Forward vertical","Backward horizontal","Backward vertical","Duplicate top","Duplicate left","Duplicate bottom","Duplicate right","Duplicate horizontal","Duplicate vertical","Checkered","Checkered inverse")
#@gui : sep = separator(), note = note("<small>Author : <i>Reptorian</i> Created by: <i>2018/12/21</i>.</small>")
+blur[0] $1
+blend[0,1] difference
mul[2] $2
remove[1]
-blend[0,1] add
12. Add overblur: above the +blur[0]$1
13. Add _overblur_preview: below -blend[0,1] add
It should look like this on the bottom portion of the code:
overblur:
+blur[0] $1
+blend[0,1] difference
mul[2] $2
remove[1]
-blend[0,1] add
_overblur_preview:
14. For ease, I'd just copy and paste this below preview:
gui_split_preview "overblur ${1--2}", $-1
By this point, you are done with the code. It should look like this.
#@gui _
#@gui Overblur: overblur, _overblur_preview(0)
#@gui : note = note("Overblur the image")
#@gui : sep = separator()
#@gui : Blur Factor = float(1,.1,10)
#@gui : Multiply Factor = float (1,.1,10)
#@gui : sep = separator(), Preview type = choice("Full","Forward horizontal","Forward vertical","Backward horizontal","Backward vertical","Duplicate top","Duplicate left","Duplicate bottom","Duplicate right","Duplicate horizontal","Duplicate vertical","Checkered","Checkered inverse")
#@gui : sep = separator(), note = note("<small>Author : <i>Reptorian</i> Created by: <i>2018/12/21</i>.</small>")
overblur:
+blur[0] $1
+blend[0,1] difference
mul[2] $2
remove[1]
-blend[0,1] add
_overblur_preview:
gui_split_preview "overblur ${1--2}", $-1
Copy and paste anywhere below Testing within updatexxxx.gmic
- Part 4 : See your work
1. Open Paint.NET
2. Load G'MIC-QT
3. Search Overblur
4. Click it.
If all goes well, it seem that it should work.
Now the basics should be learned.

Yuuuck...sorry about that. It's not easy for people who are not here as often, to get everything right. That's why I hesitate to try to be part of certain things and I don't want to muddle things up. I do want to thank you for keeping the forum organized. I know it's a big job @Pixey. We must truly have far more appreciation for what @Ego Eram Reputo , @BoltBait (a founder?) & has been doing around here for a long time.... @toe_head2001, too. Running this forum properly is a big job and it's likely a thankless job for you Admin. I'm sure people don't realize just how much dedication, time and effort goes into this, nor the "why" of it, which is a bigger picture. It's a huge important job! So, thank you, again, Pixey, and the rest of you who do this. @lynxster4 you're here, a lot, too, helping out and contributing. I'm not sure if you're an admin but you do a lot of good here, too and help others a lot, too. So, thank you, also.