Progress Report on Rebuilding Web Site

2024 May 01Home page back online
2024 May 06Menu system online, but there are still broken links and broken pages
2024 May 08Series and Archive modules in sidebar, advertising banners
2024 May 10Quick search, sidebar WIP module
2024 May 12Basic login/out functionality. No registration or password recovery yet.
2024 May 22Modal dialogs, post editing and preview, image gallery and gallery uploads
2024 May 27Some database glitches, XML validation of submitted pages
2024 May 29Display of comments, "Spoiler" short code, SEO-friendly permlinks

2024

May

24

Experimenting with Generative AI

By Duane

This is the first article I've written since I started rebuilding the site without Wordpress. It feels like progress has been made.

I've long generated images using 3D modeling and rendering. Some are really good, almost photorealistic, others are OK, and some suck. The quality depends on the tool I used and how much effort I put into it. A lot of the early ones made with Daz 3D are just terrible. Newer stuff is better. The better stuff usually came from 3DS Max, which I got quite used to, but its insanely expensive and not available for Linux, upon which I do almost all my work, so for 3D modeling I've switched to Blender, which is free and works anywhere.

Of course now we have a new method: generative AI. That didn't exist when I started this site, and still has a way to go, but it produces some first-class realistic images. And some crap. Here are a few of the images I tried just to see how it goes.

This my attempt to render High Queen Siptiss from The Black Tower. It meets my specifications, but looks like nothing I had in mind. Still, this is the best one that came out. It looks fairly realistic, but notice that her scepter takes a strange jump as it passes through her hand. That's the sort of glitch you have to watch out for. She gets the rather stupid idea of sending a battle fleet into the Kyattoni galaxy.
A rendering of Titrinka, the capital city of Kyatton. The AI didn't do too bad. It sort of got the scale of some of the buildings, but at best the tall one looks to be about half the height of the actual ones. The residential buildings reach up some five kilometers. And Titrinka is famous for being a rainbow of color. No color here. And Titrinka doesn't have streets; the Kyattoni have no need of them.
This one actually works as Jemah Hahrl's research station on Dahrshannah. The climate and terrain are right. I didn't visualize the station itself that precisely, but if I had, it would have been something like this. Of course I had to go through several attempts to get this one.

Even if you're reading my stuff, you would not have met the twins yet because I haven't written them other than an allusion in the prologue. Kolikki (the girl) and Kolinda (the boy) appear in A Remembrance of Evil. There is an argument that they're half human, but there is also the argument that they're not human at all because their genetic material is not DNA. Also, humans never have boy and girl identical twins. I didn't ask for them to have their hands in each other's pockets, but it's a perfect and serendipitous detail, as they're psychically linked. Don't fuck with them. They're actually much scarier than the Grady twins. No matter how hard I tried, I couldn't get the dang AI to produce T-shirts without the silly images.
Just another werewolf with horns, not what I was looking for. The twins, along with Stebek Wyrn of Abranda, confront the horrors of Trigdru, known across the galaxy as The Planet of Evil. Nobody, but NOBODY goes there of their own free will. But... You know. There are things on Trigdru corresponding to virtually every monster ever conceived on Earth, and some that haven't been. One in particular, I didn't even try to render.
Two abominations that came up when I was trying to render a creature native to Frelorala. The AI was clueless because it had never seen anything remotely like what I was trying to describe. It's a creature that starts out from a seed like a plant, but soon grows a heart and circulatory system, lungs, and a brain. It reproduces through a crown of flowers like an earthly plant, but also has a ring of typically eight toothed tentacles with eyes that quickly gobble up non-pollinators that find the flowers.
A rendering of the Crown of Briannon. Not at all what I pictured, but sometimes that's a good thing. AI often puts in details you never would have thought of, and even if you never use them, they can serve as a springboard for more ideas or a fountain of inspiration.
An attempt at the Star of Ages from Tetragrammaton. Again not what I envisioned, but it gives me some ideas. When Timothy Saugers learns he must find the Star of Ages, all he knows is that it's hidden somewhere in the universe, protected by an impenetrable barrier, and rotated out of our spacetime. Talk about a task!
When AI screws up. Well, this image has the elements I asked for, just not in the way I expected them. You often get things mixed up like the poor inventors in both versions of The Fly. It doesn't actually know, for instance, that men don't have rockets for heads.
I just couldn't resist tossing in this example of misguided AI in Trump's misguided attempt to convince people he actually goes to church. I can see him resorting to AI fakes, but someone on his team should have noticed that Donald only has five fingers on each hand, something AI wouldn't actually know.

So, that leaves me three ways to generate images for my novels, for covers, publicity, and general edification:

  1. Licensed images
  2. 3D modeling and rendering
  3. Generative AI

And all three have issues.

Licensing images can be expensive and usually have restrictions on how you can use them, like on one web site and in a single publication of up to 100 copies. After that, you need another license. My favorite source was CanStockPhoto, but they shut down. Alas! Even if it weren't for the cost, you can spend hours or even days going through gallery after gallery looking just the right degree of visual excitement. Three hundred space stations so far, and not one of them is right.

Likewise, 3D modeling can eat up a lot of time. That's why some of my renderings are crap. I didn't have the hours to spend on one. And the learning curve is pretty steep. You have to learn all about editing meshes, modifiers, coordinate mapping, materials, which include things like anisotropy, ambient occlusion, light sources.... You get the idea. Daz 3D is a notable exception in that you can put together a character without too much ado and do a quick render. If you want your character to actually be in a setting, that's often another piece of software. More hours get what you want.

Generative AI can produce realistic images quite quickly, but tweaking it to what you want can be tricky. You have to get the phrasing just right and there is still no guarantee. The techie solution is to train your own neural network models. That's well within the capability of home users with the right hardware, but again you're looking at hours or days to accomplish that. On of all that, getting the same spaceship twice is less likely than getting struck by lighting. You need 3D modeling for that.

There is a fourth option, but it's realistically closed to me. Except for drawing anime, my artistic skills are nowhere good enough to paint a realistic scene, and even if they were, that's more hours or days.

There you have it. A choice of methods, all of which require a significant investment in your valuable time. Here's hoping that AI improves enough to change the equation here.

At this stage in re-writing my web site, comments are not functional yet. That's too bad because I'd really like to hear from others on this.

Comments

There are no comments for this post.

You must be logged in to post a comment.

2024

May

05

What Happened to my Web Site?

By Duane

That's a good question. The answer is a little bit technical, but not insurmountable.

Yes, Kevin, I know how you felt!
When I moved it to a new server, that was supposed to be (1) good, and (2) easy. Well, "supposed to be" isn't what it's supposed to be. The move was supposed to be for both technical and financial reasons. On the technical side, my old host was sort of stuck in 2010. The site uses the PHP scripting language, and it was running version 5.3 and there would be no forthcoming upgrades there. The new host is PHP version 8.1, which has a lot to offer. But the thing with PHP is that it keeps changing, which in general is good. But new version aren't always compatible with the old, and a lot of syntax and functions that existed in 5.3 just aren't there anymore. That means dozens or even hundreds of fixes in the pipe.

On top of that, the site was based on Wordpress. I've come to the conclusion that systems like Wordpress are great for moderately technically inclined people who want to put together a web site but who aren't really coders. I've been coding for like 60 years. The downside of Wordpress is that the internals are terribly complicated, and when it breaks, it can be really hard to fix. All those PHP changes broke it magnificently.

So I'm rewriting the code from scratch. I have the original database picked apart and normalized, but there is going to be a lot of coding ahead of me, and unlike Google, I don't have a staff of hundreds of developers working on it. I have to fit it in as time permits. So bear with me. You'll see more and more features appear as I get work done on it.That's a good question. The answer is a little bit technical, but not insurmountable.

When I moved it to a new server, that was supposed to be (1) good, and (2) easy. Well, "supposed to be" isn't what it's supposed to be. The move was supposed to be for both technical and financial reasons. On the technical side, my old host was sort of stuck in 2010. The site uses the PHP scripting language, and it was running version 5.3 and there would be no forthcoming upgrades there. The new host is PHP version 8.1, which has a lot to offer. But the thing with PHP is that it keeps changing, which in general is good. But new version aren't always compatible with the old, and a lot of syntax and functions that existed in 5.3 just aren't there anymore. That means dozens or even hundreds of fixes in the pipe.

On top of that, the site was based on Wordpress. I've come to the conclusion that systems like Wordpress are great for moderately technically inclined people who want to put together a web site but who aren't really coders. I've been coding for like 60 years. The downside of Wordpress is that the internals are terribly complicated, and when it breaks, it can be really hard to fix. All those PHP changes broke it magnificently.

So I'm rewriting the code from scratch. I have the original database picked apart and normalized, but there is going to be a lot of coding ahead of me, and unlike Google, I don't have a staff of hundreds of developers working on it. I have to fit it in as time permits. So bear with me. You'll see more and more features appear as I get work done on it.That's a good question. The answer is a little bit technical, but not insurmountable.

When I moved it to a new server, that was supposed to be (1) good, and (2) easy. Well, "supposed to be" isn't what it's supposed to be. The move was supposed to be for both technical and financial reasons. On the technical side, my old host was sort of stuck in 2010. The site uses the PHP scripting language, and it was running version 5.3 and there would be no forthcoming upgrades there. The new host is PHP version 8.1, which has a lot to offer. But the thing with PHP is that it keeps changing, which in general is good. But new version aren't always compatible with the old, and a lot of syntax and functions that existed in 5.3 just aren't there anymore. That means dozens or even hundreds of fixes in the pipe.

On top of that, the site was based on Wordpress. I've come to the conclusion that systems like Wordpress are great for moderately technically inclined people who want to put together a web site but who aren't really coders. I've been coding for like 60 years. The downside of Wordpress is that the internals are terribly complicated, and when it breaks, it can be really hard to fix. All those PHP changes broke it magnificently.

So I'm rewriting the code from scratch. I have the original database picked apart and normalized, but there is going to be a lot of coding ahead of me, and unlike Google, I don't have a staff of hundreds of developers working on it. I have to fit it in as time permits. So bear with me. You'll see more and more features appear as I get work done on it.

Comments

There are no comments for this post.

You must be logged in to post a comment.

2022

Feb

10

Darkness and Silence

By Duane

Darkness. Silence like sticky clay adhering to my pores and creeping up my nostrils. It is darkness against which my eyes fight to close, for to hold them open makes them claw through the dense blackness in search of anything to see, until at last they make something up. It doesn't have to be that dark; there is a display panel at eye level, but with irises so stretched that even on low, it's like a green floodlight glaring in my face, so I keep it off. Sasha is probably in the common area with her nose in her e-reader enjoying Solzhenitsyn, and every now and then she lets a little light leak out, but it's rarely enough for me to notice with the door to my cabinet closed.

My ears, too, reach out in desperation until, frustrated, they turn inward to my own heartbeat. The laminar-flow ventilation fans are all but silent unless they kick into high, which rarely happens. The only sound that disturbs the night is the occasional ticking of the thermal radiators nearby outside as they expand and contract. The reactors are at constant power, but there are variations in solar energy. The only solid punctures of oblivion are when Sasha uses the head: the door opening and latching, the suction pumps coming on, something for my ears to latch onto if I'm awake. She probably has the same experience when I go during her sleep cycle. It's impossible to pee discretely in space.

But the darkness and silence are merely the dull black shroud over the sense of isolation. We are 400,000km from home, a distant blue world that now hung hopelessly beyond natural human reach. If there were a bridge it would take 50 years to walk it. Ahead of us, to the sides, above, behind, outside the relatively thin honeycombed titanium layer that separates our tiny bubble of life from the abysmal infinity, there is absolutely nothing for a journey of a million human lifetimes. Below, a drop of 6.7 million meters to the desolate, hostile surface of the moon. The rugged orb beneath us unrolls slowly, almost 14 hours per orbit, but we have to be high enough to relay signals between Earth and the three research posts we dropped on the moon's far side.  An orbit that physics on its own locks into eternity. If we died there, our desiccated corpses would still be following that path 10 million years later, endlessly. There is no sense of solitude greater. Even pairs of people condemned to duty in lonely missile silos and remote microwave relay stations have the familiar contact of breathing Earth's own atmosphere.

On a polar orbitMy limbs want to drift off into the neutral human body posture, but find themselves confined by my sleeping sack. Still, I'll sleep, for in the morning — if the word "morning" makes sense — I'll have to adjust that orbit. That's my job, to keep the orbit in alignment as the moon revolves on its 28-day loop so that both the Earth and all three drop stations are in constant radio contact. We always do that while we're both awake. She is supposed to be on the sleep schedule of Baikonur Cosmodrome in Kazakhstan just as I'm supposed to be on that of the Eastern U.S., but they tweaked us both an hour to give us a comfortable eight hours awake together. It's my job to adjust the orbit, hers to help interface me to a spaceship engineered in a language I suck at. Her English is much better than my Russian.

Sasha, known more verbosely as Aleksandra Nikolayevna Krayovskiya, has chin-length light blond hair and a cute pixie face, but she's not one of those siren Raquel Welch sexpot scientists you see in movies. She has no seductive figure. She's 13, one of Russia's two pride-and-joy child cosmonauts whose existence attests to the advanced state of their space program. The other, Tasha, is 17, dangerously close to adulthood and therefore of dropping off their propaganda slate. American officials think the whole thing is ridiculous, a publicity stunt, which it probably is, but I'll likewise attest that Sasha is by no means ridiculous. She's brilliant; you have to be to read Solzhenitsyn. But she's not allowed to fire the engines on her own unless it's a level five emergency. She likes to tell me that as a junior lieutenant, she outranks me, an ensign, but we're both NATO classification OF-1, so technically on a joint mission, we're equal.

Sasha preparing for EVA practice. We didn't have to do that and weren't allowed outside the ship anyway, but it's something to do besides magnetic games.
We have been alone aboard the Kirkov now for almost five days, 16 more to go before the first of the landing crews return. Two stations are for geological monitoring, the third is the last unit for a 500-km very-long-baseline-array radio telescope shielded from Earth interference by the bulk of the moon itself, each of the three being American modules transported to the moon by a Russian ship. There's something that happens between people when they're confined together outside the grasp of normal society like this. Those missile silo and microwave station crews are not nearly this isolated. I'd worked with Sasha once before, three months earlier, but we hadn't been alone for any period of time. We can't even phone home because bandwidth to Earth is limited and the channels between Mission Control and the drop stations have to remain clear. A titanium can in deep space is like a sensory deprivation chamber, as if reality itself ended at the hull. It's been five days and already I can almost read her mind. She can probably read mine, too. We play magnetic chess, magnetic backgammon, magnetic parcheesi, everything magnetic. It's impossible to play tiddly-winks in space. She even brought a Russian version of a quirky card game from America about girl fights, called "Lunch Money" in English. But you can't just lay cards on the table; you have to hold them down with magnetic clips. I think one of the reasons they chose me for this mission was confidence from the Russians that I wouldn't try to take advantage of her. Vasily hits on her, and she hates it. Vasily is almost 40. Unfortunately, his crew returns first, before even Commander Okulov. Sasha is prepared to punch him if he does it again, and I'll be ready to punch him if that doesn't work.

There's a rumor that we both might be chosen for the Mars mission later this year. Her parents are supposedly throwing a fit about her being gone for the three years it would take for traditional Hohmann transfer orbits. She says they protested this mission. But in Russia, political pressure easily outweighs parental rights, and the powers that be dearly want their public relations trophy on that trip! Tasha would obviously be an adult when we return, and there isn't time to get a new kid ready for the press releases. Besides, ballistic capture is common now (that's how we got to the moon) and they're taking a serious look at aerobraking, which of course wouldn't have worked with the moon. No atmosphere. Aerobraking worries me — I saw 2010! Either way, we might be able to shorten the journey to as little as nine or ten months even if we miss the Hohmann window. That mission will be a joint US, European, Russian, and Chinese effort. They're still arguing over the ship's name, but it's supposed to have a centrifuge, even if the sleeping compartments will still be in zero-g.

But that's all speculation, four months in the future. Right now, my eyes are wanting to stay closed instead of open. That's good. I need to be alert for that orbital maneuver tomorrow. The computer does all the hard work, but they won't let it do the piloting or even start the engines. It's no HAL 9000.

До свидания!


No, that was not one of my stories. That came from a dream. But that wasn't exactly the dream. That was the memory of the mission I had while we were at an international space conference in Canada and my nephew was making out with Tasha, pissing off the Russian authorities who didn't want one of their child cosmonauts de-virginized. Sometimes my dreams come in astonishing detail, so it's no surprise a lot of my stories originate there.

Comments

There are no comments for this post.

You must be logged in to post a comment.

2019

Jun

05

Wolfram Alpha: The Sci-FI Writer's Friend

By Duane

Any discussion of Wolfram Alpha should start with Wolfram's flagship and source of dominance in the universe: Mathematica®, upon which I imagine Alpha is built.  There are any number of categories of software that leave me amazed that such works of accomplishment can even spawn from the limited human mind: regular expression parsers, C++ compilers, natural language processing.  Voice recognition used to fall into that realm until I figured out how it works. But Mathematica sits at the apex, the crowning achievement of software engineering. It's nothing at all like Matlab, which is plain old functional programming. It's something else.  Several times during my software engineering career, I contemplated working there just to see the source code.

Wolfram Alpha, then, is something like a search engine, except instead of simply looking up words, it answers questions.

With the introductions out of the way, let's go back a few decades to when I originally wrote A Hierarchy of Gods. I might have had Mathematica at the time, a story in itself, but there was nothing like Alpha. There may not even have been a search engine like Google or Duck Duck Go, and I had to pick a date in the latter 21st century where the line from Earth to Mars ran approximately opposite to the direction to Orion's shield. I had to know how far apart Earth and Mars were at that time. I had to know how long it would take, considering special relativity, to go 32 light-years at a constant 0.8g acceleration, in both ship time and "real" time, with and without turn-around. I had my math cut out for me.

For the first part, I had to find out where Earth and Mars were currently and apply a lot of orbital mechanics and trigonometry to figure out all the angles until I found a date that placed them where I wanted, then apply some more math to calculate the distance distance between them, then some more to figure out travel time. Hours or days. The math, not the travel time. But that was then, and this is now. You need a right ascension to Mars of about 17 hours, so go to Wolfram Alpha here and start plugging in some dates:

location Mars May 15, 2074

Wolfram Alpha Output
Location of and distance to Mars on May 15, 2095, as given by Wolfram Alpha

And you get this (near right). Wow! Not only what I asked for, but I find out that the date is on a Tuesday, get a schematic of the entire solar system, a view as Mars appears in the sky, and rising at setting times in Luxemburg (that's where it thinks I am). Mars is in Leo on May 15, 2074. No good, so I try again.  I don't remember exactly what date I picked for the novel and don't want to hunt for old notes, so let's pretend it was May 15, 2095.

distance Earth Mars May 15, 2095

Again, I get more than I asked for (far right). I see that the distance is 79.57 million kilometers, coincidentally a near minimum, and as a bonus, I find out that the time for a radio signal to cross that distance is 4.424 minutes. I might need to know that. From here, it's trivial to calculate constant-acceleration flight times, but to get to this point, I have consumed less like hours or days and more like two minutes. Oh, had there been Wolfram Alpha in the old days!

Unfortunately, Alpha could not have helped me with the calculus for my relativistic calculations. Alas! Not that it can't do calculus, but it isn't able to formulate a system that complicated it its digital head from the description you give it. It's not as as smart yet as the Enterprise's computer on Star Trek, but it's getting there. Not to worry. When I first started this site, I wrote the relativistic equations down as an early post, not only for your edification, but so that I wouldn't have to figure them out all over again.

And it's not just astronomy.

In: Copernicium isotopes

Out: Unstable:

Cn-285 (40 min) | Cn-283 (4.17 min) | Cn-284 (31 s) |

Cn-282 (30 s) | Cn-281 (10 s) | Cn-280 (1 s) | Cn-279 (100 ms) |

Cn-278 (10 ms) | Cn-277 (1.1 ms)

Nor is it just for science fiction.  Suppose you're writing an international spy thriller:

In: Population Cluj County Romania

Out: Cluj, Romania | 698929 people (3.3% of total for Romania) (2014 estimate) Romania |

19.7 million people (world rank: 59th) (2017 estimate)

Or a murder mystery requiring forensics:

In: percentage phosphorus human body

Out: 1.1 mass%

Or a WWII submarine adventure:

In: 550 feet ocean depth

Out: depth | 550 feet temperature | 16.4 °C (degrees Celsius) salinity |

35 psu (practical salinity units)

overpressure | 16.89 bars = 16.67 atm (atmospheres) = 1689 kPa (kilopascals) density |

1.026 g/cm^3 (grams per cubic centimeter) = 64.08 lb/ft^3 (pounds per cubic foot) =

1026 kg/m^3 (kilograms per cubic meter)

sound speed | 1514 m/s (meters per second) = 4967 ft/s (feet per second) =

5450 km/h (kilometers per hour)

(assuming pressure-depth relation for standard ocean)

Whoa! Sound speed! That's information we might need for sonar.

Of course, Alpha can't do everything. Sometimes you get that dreaded response that it doesn't know how to interpret your input (which I couldn't make it do for the purpose of this post despite trying for several minutes), in which case you can rephrase your question and try again. There is a pro version that keeps tempting me that might be a little smarter; I  haven't tried it.  Applications like Cartes du Ciel give you better sky charts, and Google Maps will give you the railroad travel time from Nizhny Novgorod to Vladivostok (about six days), but for the subjects it knows, Wolfram Alpha can seem like magic. Give it a try, and let us know what you think.

Comments

There are no comments for this post.

You must be logged in to post a comment.

2018

Jul

01

Final Horizon Approaches

By Duane

Final Horizon original coverFinal Horizon has an unusual history. I had an idea for a space horror novel that I tentatively called Butterflies, a particularly and intentionally deceptive name. But I never wrote it because I didn't see the point. Just another monster story. Just another alien planet.  It didn't really have anything to say other than as satire on the state of Hollywood movie making these days: lots of action, void of content.

Then, as I'm a decent graphic artist, I thought I'd offer services as a cover designer. In the process, I threw together some example covers of novels that didn't exist, and the one I show here is one of them. I picked the title Final Horizon because it sounded cool, and used an image of a girl I licensed from CanStockPhoto because it looked cool. The subtitle also meant nothing in particular, just a phrase to draw attention. Nothing fancy. After all, it was an example cover.

What happened next was an act of surrealism that is impossible to explain. I was just looking at the cover and there came one of those epiphanous moments when all of reality comes to a focus.  It all fit together. Butterflies, genetic engineering (two different ways), quantum computing, quantum reality, mind amplification, child abuse, all wrapped up in an elegant commentary on ruthless capitalism and unchecked political and military power. And like a tidy bow on top, the Singularity.

Not a singularity of the black hole variety, but one of the technological variety. Wikipedia defines a technological singularity as "the hypothesis that the invention of artificial superintelligence (ASI) will abruptly trigger runaway technological growth, resulting in unfathomable changes to human civilization."  Indeed, the intelligence in Final Horizon is artificial, and it is super. But what if it comes with supermorality?  As the subtitle suggests, it's not what people are expecting.

It takes place in the future (the best place for science fiction), mid-22nd century.  By then, we have succeeded in interfacing human minds to quantum computers, but with some unanticipated and unexplained phenomena accompanying it. Hyperpilots route starships safely through treacherous hypertunnels, linkers connect to other computers as an extension of their own minds, and scanners project their consciousness even to distant star systems. (Shhhh! There are more talents that the NSA, CIA, and Pentagon don't like you knowing about.) And no one understands how any of that actually works. Then there is the unbelievable, half secret, nearly legendary, and completely mysterious story of Bucky and Katrina. The system works well, but it has three big caveats:

1. Unless you want to take off the top of a person's skull to plant a couple of hundred wires in the brain and get substandard results for all your work, you have to use kids before they reach puberty. Kids can interface to PAIN helmets. Unexpected results.

2. Because there are few naturally born children who can pull it off and fewer parents who will let them, and because the interval between being trained and reaching puberty is only a year or two, you need to engineer formula kids whose biological and mental ages you can freeze when they're at their peak. Unexpected results.

3. Because human society becomes completely dependent on formula kids, you make them docile and subservient, and because they are docile and subservient, they don't cause trouble when you treat them like trash. They also lack the inconvenience of parents. Unexpected results.

In Final Horizon, natural-born Andrew Post and formula kid Macie 7 are chosen for a mission to a distant world where people mysteriously die. But it's not until they reach their destination and find the butterflies that all hell breaks loose.

Hell that changes everything.

It's a good story.  If I ever have a chance for a Hugo or Nebula award, this is it. It took a while for the plot details to come together, but they finally have, and it's all of a thriller, a brain-twister, and a tear-jerker in one. I'm only nearing the end of the first draft, alas, so it'll be a while before you'll see the finished product.

The cover might change.

Comments

There are no comments for this post.

You must be logged in to post a comment.