I'm going to mostly consider the code problem relating to add-ons. This is going to be technical, but I'm going to try to give intuition to people who don't code. I'm going to consider changes in order I made them.
The context
First problem is that I never really used jquery. I did some code modification to create the add-on Uses tex as image in editor/reviewer, to debug HSSM's "Multi-column note editor", and to merge both of them with Frozen fields. But I never really took the time to really understand jQuery. This can be seen because the three above mentionned above writes directly plain html instead of creating jQuery objects. Learning jQuery is not something that I expect to be useful often for me, since there are more modern and better javascript libraries.
How Anki's editor work
To explain the problems I needed to solve, I need to explain how Anki is done. The "editor" is the part of the window (widget)which allow you to create and edit notes. This widget appears in three windows, the one to create notes (called "Add"), the bottom part of window to browse note ("Browse") and the window to edit current note ("Edit Current").
While Anki is done in Qt, for some reason, the editor is done in html+css+js+jQuery[1]. All of those are quite useful to let user easily create card templates. But I don't know why Qt was not sufficient for the graphical interface. In particular each "field" is not actually an input text field as it is standard in HTML. It's a standard div field which is said to be editable. Each time the edition stops for two seconds and each time you leave the current field, its value is sent to Python which saves in the note object.
I see a few advantages with using all of this. Since it's a standard div, you can have any HTML inside of the field, and not only plain text or formatted text. Furthermore, since cards' question/answer are actually coded in HTML, it means you can use any html you want in your note's field.
It also means that each change you want to make to the editor must be in javascript/jQuery/css and not in Python/Qt. Depending on your prefernece as a dev', this can be a good news or a bad news.
The technical problems
Editing an image's size in HTML
As explained above, the field is simply some HTML. In plain english, the editor is just a page, as any web page, except that is is not on internet. This means that I only have to let user edit the size of the image's html tag, and everything would be solved.
A quick google search shows me that the method resizable(https://jqueryui.com/resizable/), a part of jquery-ui, is what I want. And indeed, I simply had to tell the editor to import jquery-ui, and apply resizable to each image. It did seem to work at first. At least as long as the add-on Frozen Field was not used, since this add-on also added images in the editor (a snowflake, whose color indicates whether the field is "frozen"). So instead, I had to restrict the application of resizable to images in fields.
Saving and loading a resizable image
The problem is that "resizable" does more than adding some width/height to an image. It put the image in a div tag ("div" meaning "division of content", e.g. it's a special part of the web page.), and put other div's near to it. Those divs' are saved in the field.
My first intuition told me that it must be those div's which makes the image resizable. If I save those div's with the image, it'll be resizable everywhere. Of course, it may seems nice to imagine that they'll be resizable in the reviewer, on smartphone, etc... but if they are resizable, but the new size is not saved, that'll only create confusion; so it should probably be avoided. You know what ? I was totally wrong. Those div's were not enought to allow images to be resizable. Worst, if you try to apply "resizable" to an image inside of those div, they won't get resizable at all. Instead, you'll see the resizable cursor, but you can't resize them. If you save the broken result and apply resizable to it, you won't even see the cursor anymore. That means that saving those extra div would make the image not resizable !
I should not that jquery-ui's resizable is not so bad; because if you apply resizable to the same image multiple time, it works correctly. The problem occurs when the image is saved and then loaded. I assume that, when you save the image and load it, you have saved a part of the "resizability" of the image; the part which is html, and not the other part which is in javascript/jQuery. And restauring only a part of the "resizability" does not lead to an imagine partially resizable.
The solution seems simple. Resizable has a method called destruct, which is supposed to put everything back as it was before, except that it keeps the new size. That's great, isn't it ? Except that for some reason it does not work. After you apply destruct, the image is not resizable anymore (that's the least I can expect), but the result still contains some useless html content, and because of it, when I save and load the fields again, I can't make the images resizable anymore. So my solution was just to clean all of the html manually. Look for the added div's, the added classes, and style, and remove all of this. That was not hard, I only had to read the code produced by resizable and tells my add-on to remove the div with a class ui-* (and hope that no user really want such a div in its field), the css position and the image's class (hoping that no user/add-on really wanted the image to have any css class.)
The only problem is that I need to do this cleaning each time the field is sent to python. However, this is sent while the field is still being edited. So I first have to clone the field's jQuery node, and then clean the clone.
Having text and image on the same line.
Another unexpected problem. The image can't be on the same line as any text. Indeed, resizable asks for the image/div is to be "block". If I set the image back to "inline", it stops working. Actually, using "inline-block" works. I honestly don't know why.
Text's size was limited by image size.
Let's say you want to add text after an image. Since the image is in a div; your cursor will be in the div, and so suddenly your text will be in here too. So the text will be restricted by the image's new width, and it'll move the image above. Really not something I want. So I had to ensure that actually, the div added for the image are not editable. Which means that in some case, you need to select the image to erase it instead of just pressing delete. I really don't like it, but I don't see any better solution.
Adding new image to a field
Up to now, I mostly dealt with images already in the collection. A note loaded from the collection and which is being edited. But when we create new note, we can't just load image from the collection, we need to incorporate new images. Which leads to new difficulties. Indeed, when the image is added, it is not automatically resizable. In theory, you simply need to call resizable again, but only on the new image(s). In practice, it is actually hard because you don't have any dom object here, but only plain html text to paste. So instead, you select all images in fields which are not already resizable and make them resizable (by the way, the documentation does not state how to check whether an image is not resizable. I used "$img.resizable("instance") == undefined", but I'm not sure it was the correct way to do it.
Images whose width is 0
For some reason, sometime, the image width was put to 0. So the solution I found was to add a little bit of delay before calling resizing. My intuition is that by calling resizing directly, the dom didn't know the size of the image, so assume it's 0, and the resizing then say "okay, so let the image be resizable, and we start with size 0". Ideally, I'd simply state that the image should be resizable once it's loaded. But since I don't actually have a dom/jquery object for the image, I don't see how to do it. I later replaced the delay with the method "ready"; which would have been straightforward for any jQuery dev', but as I said, I was new to it.
Badly resized image
When I tested this add-on, I realized that one important feature was to put back the image to its initial size. Normally, it can be done easily, by setting width and height to "". But for some reason it didn't work. The image got scropped by its previous side. I finally realized that it was because the div containing the image also had the size of the (resized) image. So I had te realize I needed to remove the size indication of the containing div.
Images on top of button
A beta tester told me that when the editor is scrolled down, images were shown over the buttons of the toplevel bar. I never paid attention to it, but when he said it, I undertsand I had to correct it, if I want a good product. The reason this occured is that the top level buttons are in the same html window; as a fixed top level element. And the editor itself was another div element, with a toplevel margin big enough so that nothing gets hidden under the top level bar. The problem is that, for some reason, resizable images get over the fixed element. I thus tried to remove the margin and ensure that the div element was fixed below the top level bar. It was not beautiful because I have no way to know the exact size of the top level bar. I wanted to add a scroll bar to the editor part only, ignoring the top level buttons. But that's not possible, because it seems that in HTML you can add a scroll bar only on element of fixed size. And the size of the editor is not fixed, it depends on the size of the windows. Finally, the solution I found was to put the z-index of the top level bar to 999. I wanted actually to make this change directly to anki's code. Until I discovered that it was already in anki's code; it was introduced in 2.1.20 (which was still in Beta when I started to write this add-on).
Change by 2.1.20
There was one small change in anki 2.1.20 that most people probably did not notice. The width of the images were limited to 90% of its container. Usually it means 90% of the size of the field. If you use a table, then it's 90% of the size of the cell. In my case, it meant 90% of the size of the div, which is used to resize things. Which was a nightmare because I want that the resizable div and the image have exactly the same size. When I updated to last version of anki, it took time to understand why suddenly my add-on broke, and figure out that it was caused by this change in the style sheet. Once found, the solution was easy: put the max-width of each image to be 100%. If I wanted to respect anki change, I could put the max-width of the div to 90%; but I felt like it was a bad idea. After all, I don't want to limit the resizing powers of the users.
Interaction with other add-ons
Two users told me that they wanted my add-on to interact nicely with other add-ons. It makes a lot of sens to want this. There is no reason for a user to choose between a spell checker and being able to resize image. That was actually complex to do, because each add-on need to change the Javascript/css. The way I knew to do it was to replace the method generating the html. Until I discovered the code of Simgunz, which made something quite simple I didn't thought about: injecting js/css after the editor is loaded. In order to automatize it and apply it in other add-ons, I actually create a small library in order to automate this. Even if this is useless, since in 2.1.21 a new method will be introduced in Anki to automate it.
Limit image height
There was one add-on which could not easily interact with my add-on. This add-on Maximum image height in card editor limit the height of images in the reviewer. This ensures that the image does not takes too much space in the editor without limiting the use of big image. That's really a great idea. Except that it's incompatible with my add-on, whichg ensure that we can resize it.
There is no way both add-ons work together; I add to implement the above-mentionned add-on in mine. That was not hard: the only thing it does is change the style so that the max-height of each image is 200px (or any configured value). Applying this rule when my add-on is used lead to a strange result. You could resize images up to height 200, and no more. However, the div which contains the image has no limit. So you can try to resize the image to 400px for example. The image won't actually get resized, but the editor reminds it was resized. That means that while the image is 200 px of height, it takes 400 px of size (which makes the add-on quite useless !). Furthermore, in order to resize again, the cursor needs to be put where the cursor was released the last time, instead of being put at the border of the image.
I followed an advice from aPaci95. One click to activate resizing, and one to deactivate it and put back the height limit. That's still easy to use (I hope). Now that I know what I want to do, I had to do it. And hope, whole new code. The solution was easy, I should state that the max-height of this particular image is 100% when the image is clicked; and then remove the max-height when it's clicked again (so that it takes the same limit as the remaining of the document). Except that when I did that, the image was still seen as resizable when actually it was not. So I add to ensure that the image was made resizable only when it was clicked instead of being made immediately resizable. And reciprocally, once the image was clicked a second time, I should remove the fact that it was resizable. Which was easier said than done, since, as I wrote above, when you remove the "resizability" it left a lot of unwanted css indications in the image, which I had to remove. But I can't remove absolutely everything, because otherwise I could not make the image resizable again (because the "resizable" library recalled that it left some elements and would not add them back, even if I manually removed them.)
Click and double click
I discovered something strange that is already well known. By default, jQuery does not support both click and double click. It seems to me that having different actions when you click or double click on an object is nothing special or new. But not, if you set both click and double click action, and then double click, then the click action is executed twice. I just googled, because I was not the first one to have this problem. I expectd to use this solution except that it does not works. I thus modified it to make it work. The idea is simply, on first click, to state "in 1 second, execute the single click action" and if there is a second click during the second, to state "cancel the previous order, and do the double click action right now".
Crowdfunding
By the way, this add-on is not yet public. You can become a beta-tester immediatly by pledging 15 euros on kickstarter. Otherwise, I'll share it publicly as soon as the goal of 300€ is reached. I should state that I don't think I'll use this add-on myself. I only did it because au lot of people want it. More than 70 people actually. Often my addons are downloaded thousands of time. Given the amount of work it represents, as explained above, I thought that 300€ was actually not a lot as far as developper salary goes, given the number of people who may use it. Actually, I choose 300€ when I didn't care about interacting with other add-ons, I probably would have considered to be not worth my time if I knew how much work interacting with other add-on would take.
One fun problem is that, even if a lot of people want this add-on, I can't reach a lot of them, because crowdfunding are forbidden on anki medical school subreddit.
If the crowdfunding did work, I was hoping to be able to crowdfund more ambitious project, such as a website to collaborate on decks; but I fear that I must realize that it's not possible to sell service to Anki's user, even if a lot of them want them.
Note
[1] I know that js+jQuery may seems redundant. But they are actually a part of the editor which does not use jQuery
1 From Products -
I am regular reader, how are you everybody? This article posted at this website is actually
pleasant.
2 From Anothersocialpanel -
This will result iin exdtra lead era which may then be run down and converted.
3 From Moshe -
Meet numerous target audiences and buy Intagram Panel Followers
from us.
4 From anothersocialpanel -
You can reach out to them for services associated to Instagram, Linked In,
Twitter, Facebook, YouTube, andd Spotify.
5 From Piper -
With Anothersocialpanel, you have thee most amazing companies obtainable too you.
6 From anothersocialpanel -
We havge addeed all the first cost methods within the World,
and we at all times maintain including more gateway.
7 From anothersocialpanel -
Here are a number of general issues you should search forr before
selecting a site.
8 From anothersocialpanel -
We are proud to have the most reliable or fastest support within the SMM
World Panel, replying to your tickets 24/7.
9 From Louanne -
In 2019, theyy deleted Story views that haad been from inauthentic accounts (for example,
accounts wuth zero followers/posts).
10 From vbucks -
Epic Gamss nonetheless releases STW Packs however they work a bbit in oone other way.
vbucks
11 From T Plus Male Enhancement Reviews -
Oh my goodness! Awesome article dude! Thanks, However I am going through problems with your RSS.
I don't know why I can't subscribe to it. Is there anybody having the same RSS issues?
Anyone who knows the solution can you kindly respond?
Thanx!!
12 From BUy Dominant Male Enhancement -
Great beat ! I wish to apprentice whilst you amend your web site, how could i subscribe for a blog web site?
The account helped me a appropriate deal. I were
a little bit acquainted of this your broadcast provided vivid clear concept.
13 From Dominant Male Enhancement Review -
I used to be suggested this web site by way of my cousin. I'm
no longer certain whether this put up is written by him
as nobody else recognise such detailed about my trouble.
You are amazing! Thanks!
14 From Dominant Male Enhancement Ingredients -
I absolutely love your blog and find nearly all of your post's to be just what I'm looking for.
Does one offer guest writers to write content for yourself?
I wouldn't mind composing a post or elaborating on a lot of the
subjects you write with regards to here. Again, awesome website!
15 From Dominant Male Enhancement Reviews -
Please let me know if you're looking for a article author for your blog.
You have some really great articles and I think I would be a
good asset. If you ever want to take some of the load off, I'd really like to write some articles for your blog in exchange for a link back
to mine. Please blast me an email if interested. Regards!
16 From Buy SLIM+ ACV Gummies -
This article is genuinely a fastidious one it assists new web viewers, who are wishing
for blogging.
17 From Lou Vecchio -
Fantastic blog! Do you have any hints for aspiring writers?
I'm planning to start my own site soon but I'm a little lost on everything.
Would you recommend starting with a free platform like Wordpress or
go for a paid option? There are so many choices out there that I'm completely overwhelmed
.. Any recommendations? Thank you!
https://acessa.la/brittdegrave
http://england.anunciase.com/others...
https://kosans.online/stephainefya
https://cardiff-trade.com/advert/fr...
https://redfernelectronics.co.uk/fo...
https://dyntec.org/friendship/taco-...
18 From Augustus Veys -
Hi Dear, are you truly visiting this site on a regular basis, if so after that you will
absolutely get good experience.
https://datinginfo.site/lesterbyrne
https://ooh-deer.com/author/mariett...
https://bio-linky.com/brooksfwr328
https://bio-linky.com/antoniettame
http://www.chiangmaiarea5.go.th/201...
https://alpha.trinidriver.com/trini...
19 From Wellness Keto -
I do accept as true with all the concepts you've introduced in your post.
They are really convincing and will definitely
work. Nonetheless, the posts are very brief for beginners.
May you please prolong them a little from subsequent time?
Thanks for the post.
20 From Hulk Heater Portable -
I am extremely impressed with your writing abilities and also with the layout on your
weblog. Is this a paid subject or did you modify it yourself?
Either way stay up the nice quality writing,
it is rare to see a great blog like this one today.
21 From Jenine Tix -
Hi i am kavin, its my first occasion to commenting anywhere,
when i read this article i thought i could also make comment due to this good
post.
https://www.netoglas.com/kuca/twosd...
http://ripdir.com/jobs/twosday-shir...
http://ofertas.euvg.pt/ofertas-de-e...
https://biolinkbuzz.com/gertrudeshe...
https://asset.htct.ae/openclass/ful...
https://linkshift.vlogy.app/cortezb...
22 From funny st -
Why viewers still use to read news papers when in this
technological world the whole thing is available on net?
http://www.distancelearning.wiki/in...
https://enterprise-suite.info/index...
https://wiki.fairspark.com/index.ph...
https://silver-ecs.com/wiki/Let_s_G...
https://silver-ecs.com/wiki/User:RM...
http://www.fireinnovations.net/inde...
23 From QE Keto Boost Diet -
This website is my inspiration, really good design and Perfect content
material.
24 From Wellness Keto INgredients -
Thank you for some other excellent post. The place else may anyone get that kind of info in such an ideal approach of writing?
I have a presentation subsequent week, and I am at the look
for such information.
25 From Buy Lofi CBD Gummies -
I like this site because so much utile material on here :D.
26 From Whole Leaf CBD Oil Reviews -
Since the admin of this site is working, no hesitation very quickly it will be renowned,
due to its feature contents.
27 From Wolverine Stamina Ingredients -
Hi, I think your blog might be having browser compatibility
issues. When I look at your website in Firefox,
it looks fine but when opening in Internet Explorer, it has some
overlapping. I just wanted to give you a quick heads up!
Other then that, very good blog!
28 From Elysia Skin Serum -
Heya! I understand this is somewhat off-topic but I had to
ask. Does building a well-established website like yours take a large amount of work?
I am completely new to running a blog but I do write in my diary everyday.
I'd like to start a blog so I can share my experience and feelings online.
Please let me know if you have any recommendations or tips for new
aspiring blog owners. Thankyou!
29 From Dominant Male Enhancement -
Wow, this article is fastidious, my sister is analyzing these kinds
of things, so I am going to let know her.
30 From Monjour CBD INgredients -
Hello my loved one! I wish to say that this post is amazing, great written and include
approximately all vital infos. I would like to peer extra posts like this.
31 From Whole Leaf CBD Oil Reviews -
Thanks for the good writeup. It in fact was a enjoyment account it.
Glance complicated to more introduced agreeable from
you! However, how can we keep in touch?
32 From Alpha Gro Male Enhancement -
Hi there, yes this article is truly nice and I have learned lot of things from it regarding blogging.
thanks.
33 From Slim+ ACV Diet -
I have been reading out some of your posts and i can state pretty nice
stuff. I will definitely bookmark your website.
34 From Alpha Gro Male Enhancement -
Thank you so much with regard to giving everyone an update on this subject on your site.
Please be aware that if a completely new post becomes available or when any variations occur on the
current post, I would want to consider reading more and learning
how to make good using of those approaches you share.
Thanks for your efforts and consideration of others by making your blog
available.
35 From Dominant Male Enhancement Review -
I read this paragraph fully concerning the resemblance of most up-to-date and previous technologies, it's remarkable article.
36 From Order QE Keto Boost -
Hi there colleagues, good article and good arguments commented at
this place, I am in fact enjoying by these.
37 From Order SLIM+ ACV -
I blog frequently and I genuinely thank you for your information. Your article has really peaked
my interest. I will bookmark your website and keep checking for
new information about once a week. I opted in for your Feed too.
38 From Lean Start Keto Weight Loss -
I couldn't refrain from commenting. Very well written!
39 From SLIM+ ACV Supplement -
Rattling nice style and design and fantastic articles, hardly anything else we want :D.
40 From Buy T Plus Male Enhancement -
I see something really special in this site.
41 From Lean Start Keto Supplement -
Hey there! I know this is kind of off topic
but I was wondering if you knew where I could get a captcha plugin for my comment form?
I'm using the same blog platform as yours and I'm having problems finding one?
Thanks a lot!
42 From Order Dominant Male Enhancement -
I regard something truly special in this internet site.
43 From Extreme Senses Review -
Wow! At last I got a web site from where I be capable of truly take valuable
data regarding my study and knowledge.
44 From Lofi CBD Cubes Online -
Hello I am so glad I found your webpage, I really found you by mistake, while I was
browsing on Aol for something else, Nonetheless I am here now and
would just like to say thank you for a marvelous post and a all round
thrilling blog (I also love the theme/design), I don?t have time to go through it all at the minute but
I have book-marked it and also added your RSS feeds, so when I have time I will be back to read
a great deal more, Please do keep up the superb jo.
45 From Monjour CBD INgredients -
Right here is the perfect web site for anybody who
wishes to find out about this topic. You realize a whole lot
its almost tough to argue with you (not that I actually would want to?HaHa).
You definitely put a new spin on a subject which has been written about for ages.
Excellent stuff, just excellent!
46 From Organixx CBD Supplements -
What's up, this weekend is nice designed for me, since this moment i am reading this wonderful educational article here at my residence.
47 From Metalean Online -
Write more, thats all I have to say. Literally, it seems as though you relied on the video
to make your point. You definitely know what youre talking
about, why throw away your intelligence on just posting videos to your weblog when you could be giving
us something informative to read?
48 From SLIM+ ACV Gummies Supplement -
hi!,I like your writing very so much! proportion we be in contact more approximately your article on AOL?
I require an expert on this house to solve my problem.
May be that is you! Having a look forward to look you.
49 From Organixx CBD -
Very interesting topic, thank you for posting.
50 From Whole Leaf CBD Square Gummies Reviews -
hello!,I like your writing so much! share we communicate more about your post on AOL?
I need an expert in this house to resolve my problem. Maybe
that's you! Having a look forward to peer you.
51 From T Plus Male Enhancement Reviews -
It's going to be end of mine day, except before ending I am reading this great post to increase my know-how.
52 From Wellness Keto Review -
As a Newbie, I am always browsing online for articles that
can benefit me. Thank you
53 From Monjour CBD Review -
I do not even know the way I finished up here, but I assumed
this publish used to be great. I do not recognise who
you might be but certainly you are going to a famous blogger if you
happen to are not already ;) Cheers!
54 From Organixx CBD Review -
It's very straightforward to find out any matter on net as compared to books, as
I found this paragraph at this site.
55 From SLIM+ ACV Gummies -
I was looking at some of your articles on this website and I
think this website is rattling informative! Keep on posting.
56 From Order Extreme Senses -
I gotta favorite this site it seems invaluable very useful.
57 From Monjour CBD INgredients -
I've recently started a site, the info you provide on this website has helped me tremendously.
Thank you for all of your time & work.
58 From Monjour CBD Reviews -
With havin so much written content do you ever run into any issues of plagorism or copyright violation?
My blog has a lot of exclusive content I've either
authored myself or outsourced but it appears a lot of it is popping it up all over the
web without my authorization. Do you know any solutions to help stop content from being stolen? I'd truly appreciate it.
59 From Extreme Senses Online Review -
I gotta bookmark this internet site it seems very helpful invaluable.
60 From Order Monjour CBD -
I've recently started a web site, the information you provide on this website has helped me tremendously.
Thank you for all of your time & work.
61 From 1인샵 -
Massage is certainly one of the most typical ways to cut back stress.
"There are many muscles that attach your jaw to totally different elements of your skull and neck, and facial massage might help to cut back the tone in those muscles to help in getting it shifting again," O’Brian explains.
As we will see, PA and NA observe a roughly regular distribution with
some attainable skews and bumps and range in peak values and
locations. In general, NA has narrower distribution with increased peaks, this makes NA
values labels much less discriminative in comparison with PA.
Sleep options had a more regular distribution as in comparison with heart-fee options and in gener‘al,
values collected by the ring had distributions closer to normal.
As we will see, the distribution of the variety of steps after min-max
normalization could be very concentrated (y axis is logarithmic),
which could be an effect of the COVID lockdown circumstance.
Using solely goal measures by industrial gadgets to predict an individual’s have an effect on can allow us to watch mental health in a more continuous.
First, in Section 5.1 we introduce the external socio-economic indicators and investigate their correlation between the behavioral measures aggregated at municipality degree.
Accelerometer (ACC) and photoplethysmography (PPG) are the primary measures captured in the smartwatch that are indicators of
a user’s bodily actions (e.g., steps, movements) and the
autonomic nervous system’s activities (e.g., coronary
heart rate, coronary heart fee variability).
62 From Extreme Senses -
I am regular visitor, how are you everybody? This post posted
at this website is actually nice.
63 From Extreme Senses Reviews -
Hey there this is kind of of off topic but I was
wondering if blogs use WYSIWYG editors or if you have to
manually code with HTML. I'm starting a blog soon but have no coding expertise so I wanted to get advice from someone with
experience. Any help would be greatly appreciated!
64 From Buy Organixx CBD -
It's a pity you don't have a donate button! I'd certainly donate to this
superb blog! I guess for now i'll settle for book-marking and adding your
RSS feed to my Google account. I look forward to new updates and will talk
about this website with my Facebook group. Chat soon!
65 From Ready Keto Ingredients -
That is very attention-grabbing, You're an overly professional blogger.
I've joined your rss feed and stay up for in quest of extra
of your excellent post. Additionally, I've shared your site in my social networks
66 From Alpha Gro Supplement -
Just wish to say your article is as amazing. The clarity in your
post is just spectacular and i can assume you're an expert on this
subject. Well with your permission allow me to grab your feed to keep up to date with forthcoming post.
Thanks a million and please carry on the enjoyable work.