Lisp HUG Maillist Archive

lispworks 7.0

On Thu, Apr 9, 2015 at 1:07 PM, Martin Simmons <martin@lispworks.com> wrote:
> We don't reveal the timing or contents of releases in advance, but LispWorks
> 7.0 will be available very soon and will include that fix.
>
Is there a preview of bugs that have been fixed?

I'm hoping that LispWorks 7.0 will include ASDF 3, as it's maybe the
last actively maintained CL implementation to only have ASDF 2. (It
would be even better if, like SBCL and MKCL, it provided UIOP
separately, and had ASDF require UIOP.)

PS: note that asdf/tools/install-asdf.lisp contains a tool to help
make (require "asdf") work in an existing LispWorks 6.1 installation.
It also contains code to install UIOP and ASDF separately.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Lisp programmer available: Will write code
that writes code that writes code for food. — Rob Warnock

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Re: lispworks 7.0

Unable to parse email body. Email id is 13295

Re: lispworks 7.0

Madhu <enometh@meer.net> writes:

> * Fare <CAN7nBXfOGQubEZBerS_sX_aBNN_BC+fyVOqqBWRox1wRJ+gr1w@mail.gmail.com> :
> Wrote on Thu, 9 Apr 2015 13:27:47 -0400:
> | On Thu, Apr 9, 2015 at 1:07 PM, Martin Simmons <martin@lispworks.com> wrote:
> |> We don't reveal the timing or contents of releases in advance, but
> |> LispWorks 7.0 will be available very soon and will include that fix.
> |>
> | Is there a preview of bugs that have been fixed?
> |
> | I'm hoping that LispWorks 7.0 will include ASDF 3, as it's maybe the
> | last actively maintained CL implementation to only have ASDF 2. (It
> | would be even better if, like SBCL and MKCL, it provided UIOP
> | separately, and had ASDF require UIOP.)
>
> I would hope that Lispworks 7.0 ships WITHOUT ANY ASDF.  ASDF is
> thirdparty software. I certainly won't be paying any money for a lisp
> that bundles ASDF.
>
> ASDF has turned out to be a mechanism to convert a decentralized
> developer ecosystem into a centralised quicklisp based system which
> will eventually be controlled by google.  It does this by adding
> layers of dependencies and by facilitating the adding of even more
> layers which eventually hand over control of your lisp image to the
> third parties who control these layers.  The widespread adoption of
> ASDF testament to the low skill and knowledge level of the adopters,
> and perhaps a bigger testament to the clout of the racket which is
> charged with pushing its adoption.  Why would lispworks ship code
> which purports to be compatibility for n OTHER lisp implementations?
> Furthermore it is only n handpicked nwo implementations of lisp that
> this opensource racket already has control over with developer setups
> in place over the "community", sadly the more "popular" ones turn out
> to be the bigger scoundrels.
>
>>From the point of view of a defsystem, the design and implementation
> of ASDF is a complicated abomination.  Worst of all, ALL of its
> shortcomings and bad design are intentional, in order to facilitate
> "community-engagement" with a community which can be brainwashed off
> using any better software.  Common use cases require extraordinary
> intervention from the maintainers.  I do not believe lispworks should
> impose or facilitate this racket by shipping ASDF, instead they should
> allow users of ASDF to shoot themselves in the foot by downloading it
> separately on their own initiative, perhaps from an ASDF partner such
> as clozure.


This is certainly an opinionated point of view.  
I resisted switching to asdf for a long time myself.

But I fail to see the link between ASDF or Quicklisp and google.
Do you have any insider info, will google buy out Xach?
Also, notice that quicklisp is free software, and that you can build
your own distribution.  And Xach hosts it on Amazon clouds.

As for ASDF per-se, it has indeed the same problem as a lot of OO-based
systems, in that it is easily extensible, but only if you know well the
object model it uses, along with all its methods, so that you're able to
extend it by writing just the right method for the right subclass.

I've not dedicated the time needed to learn it enough to be able of such
a feat.

But is it really such a big problem?  It just makes it a little less
easy to extend that you would expect, but not more than other systems,
and being the third rewrite, I would expect it to rather well refined.

On the other hand, the "better" replacement should be xcvb, which IS
written by people working at ITA now Google.  The question could be
indeed, when will xcvb ready for production, and whether quicklisp would
be able to use xcvb?

I would note that if you write simple system definitions, (apart from
the fact that we usually qualify the symbol asdf:defsystem), you can
write .asd files with nothing in it really depending on asdf: it's just
a defsystem form, which _declares_ some dependencies.  How you process
this sexps is entirely up to you.

You could very well write a 20-line function to compile and load systems
using these defsystem forms, and live and be happy for ever.  (hint: use
com.informatimago.common-lisp.cesarum.file:sexp-file-contents
and com.informatimago.common-lisp.cesarum.utility:topological-sort)


For the implementation maintainers, the only thing is that asdf defines
and require some common POSIX features.  The problem here is that vendor
have not yet defined a de-facto standard (a portability library
eventually implemented by every implementation) for POSIX operation.

A long time ago I started such a POSIX API specification for CL on
sourceforge which had no traction, and you may ask Robert Strandh, how
well advanced he is with his plan to specify one POSIX function per day:
every body is busy, and until commercial vendor pay employees full time
or almost to establish such a sub-standard, nothing will advance very
fast.  Amateurs too have to pay the rent.  

Anyways, the point is that this workload ASDF requires on the part of
implementation vendors or contributors for it's integration has to be
executed in any case, be it in the other portability libraries or in the
applications.  It is a good thing for lisp developers to be able to
rely on asdf (uiop) as a portability library for those features, thanks
to ASDF ubiquity.



-- 
__Pascal Bourguignon__                 http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Re: lispworks 7.0

On Fri, Apr 10, 2015 at 4:40 AM, Madhu <enometh@meer.net> wrote:
>
> * Fare <CAN7nBXfOGQubEZBerS_sX_aBNN_BC+fyVOqqBWRox1wRJ+gr1w@mail.gmail.com> :
> Wrote on Thu, 9 Apr 2015 13:27:47 -0400:
> | On Thu, Apr 9, 2015 at 1:07 PM, Martin Simmons <martin@lispworks.com> wrote:
> |> We don't reveal the timing or contents of releases in advance, but
> |> LispWorks 7.0 will be available very soon and will include that fix.
> |>
> | Is there a preview of bugs that have been fixed?
> |
> | I'm hoping that LispWorks 7.0 will include ASDF 3, as it's maybe the
> | last actively maintained CL implementation to only have ASDF 2. (It
> | would be even better if, like SBCL and MKCL, it provided UIOP
> | separately, and had ASDF require UIOP.)
>
> I would hope that Lispworks 7.0 ships WITHOUT ANY ASDF.  ASDF is
> thirdparty software. I certainly won't be paying any money for a lisp
> that bundles ASDF.
>
> ASDF has turned out to be a mechanism to convert a decentralized
> developer ecosystem into a centralised quicklisp based system which
> will eventually be controlled by google.  It does this by adding
> layers of dependencies and by facilitating the adding of even more
> layers which eventually hand over control of your lisp image to the
> third parties who control these layers.  The widespread adoption of
> ASDF testament to the low skill and knowledge level of the adopters,
> and perhaps a bigger testament to the clout of the racket which is
> charged with pushing its adoption.  Why would lispworks ship code
> which purports to be compatibility for n OTHER lisp implementations?
> Furthermore it is only n handpicked nwo implementations of lisp that
> this opensource racket already has control over with developer setups
> in place over the "community", sadly the more "popular" ones turn out
> to be the bigger scoundrels.
>
> >From the point of view of a defsystem, the design and implementation
> of ASDF is a complicated abomination.  Worst of all, ALL of its
> shortcomings and bad design are intentional, in order to facilitate
> "community-engagement" with a community which can be brainwashed off
> using any better software.  Common use cases require extraordinary
> intervention from the maintainers.  I do not believe lispworks should
> impose or facilitate this racket by shipping ASDF, instead they should
> allow users of ASDF to shoot themselves in the foot by downloading it
> separately on their own initiative, perhaps from an ASDF partner such
> as clozure.
>
> --- Madhu
>
> PS: I hope with the release of 7.0, lispworks can announce where the
> harlequin was in 6.  I for one couldn't spot it in the GTK version.
>
Madhu, I don't know what you've been smoking all this time,
but beware that abuse can trigger paranoia. I hope it's not permanent.

For the record, I am the one and only person at ITA Software then Google
who ever hacked seriously on ASDF or pushed it actively.
While many of my colleagues viewed my efforts with sympathy,
it was always viewed at best as a by-product of improving the QRes build.

Not only has Google never pushed ASDF, but it has stopped using it altogether.
What more, only one half of ITA Software was seriously using ASDF,
its airline reservation system, and Google cancelled it few years back
and the first and last customer finally pulled the plug last November.
This side project may therefore ironically one of the few lasting bits
of CL software that will have come out of the QRes adventure.

On the other hand, expect to see Lisp support appearing some time this year
for http://bazel.io/ — Google's now opensource build system.
If you want to spread FUD about Google's nefarious plans,
at least get the nefarious plans straight!

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
To fight a violent enemy, violence is necessary;
but to fight violence itself, violence is vain at best.

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Re: lispworks 7.0

On Fri, Apr 10, 2015 at 6:24 AM, Pascal J. Bourguignon
<pjb@informatimago.com> wrote:
> As for ASDF per-se, it has indeed the same problem as a lot of OO-based
> systems, in that it is easily extensible, but only if you know well the
> object model it uses, along with all its methods, so that you're able to
> extend it by writing just the right method for the right subclass.
>
The object model was originally broken; it was only fixed with ASDF3.
If you want to understand the ASDF object model, beside the source code,
and its documentation, the best source of information is my wrap up
of my involvement as ASDF maintainer, at:
    https://github.com/fare/asdf3-2013

> On the other hand, the "better" replacement should be xcvb, which IS
> written by people working at ITA now Google.  The question could be
> indeed, when will xcvb ready for production, and whether quicklisp would
> be able to use xcvb?
>
I fear that XCVB is mostly dead. When I became ASDF maintainer,
I stopped adding new features to XCVB. Now it lags behind in many ways,
though in other ways, it's still ahead. Yet, in these other ways,
it cannot remotely rival with bazel, Google's newly opensource build system.
Bazel implements all the things I dreamed for XCVB to implement,
except for it being an unportable java memory hog instead of
a lean portable Lisp solution. I suppose there's still an opportunity
to hack on XCVB, if someone feels like a challenge.

On the other hand, for a lean portable Lisp solution, ASDF3 is probably
a better place to start than XCVB, especially since the transition from
ASDF2 to ASDF3 was heavily informed by my experience with XCVB:
ASDF3 adopted quite a few design patterns from XCVB, not to speak about
a lot of actual code that became the start of its UIOP.
And it avoided some some dead ends that I went into during my XCVB days.
That said, more ideas from XCVB could usefully make it to ASDF, and
the asdf/TODO file describes what an ASDF4 could look like that way,
now that ASDF3 did the hard thing of fixing the ASDF object model.


> I would note that if you write simple system definitions, (apart from
> the fact that we usually qualify the symbol asdf:defsystem), you can
> write .asd files with nothing in it really depending on asdf: it's just
> a defsystem form, which _declares_ some dependencies.  How you process
> this sexps is entirely up to you.
>
> You could very well write a 20-line function to compile and load systems
> using these defsystem forms, and live and be happy for ever.  (hint: use
> com.informatimago.common-lisp.cesarum.file:sexp-file-contents
> and com.informatimago.common-lisp.cesarum.utility:topological-sort)
>
For a radically simpler design that isn't backward compatible, see how
faslpath and quick-build did it. Quick-build wasn't portable, but it
was only 184 lines,
one quarter of Dan Barlow's initial hack, and 64 times less than the
current ASDF.
That said, the current ASDF contains a robust portable implementation
of the same idea, and I recommend it to all users for new developments.
See the ASDF documentation for package-inferred-system.

> For the implementation maintainers, the only thing is that asdf defines
> and require some common POSIX features.  The problem here is that vendor
> have not yet defined a de-facto standard (a portability library
> eventually implemented by every implementation) for POSIX operation.
>
UIOP implements a good enough portability library for ASDF.
For more complete access to the OS, I recommend IOlib.

> Anyways, the point is that this workload ASDF requires on the part of
> implementation vendors or contributors for it's integration has to be
> executed in any case, be it in the other portability libraries or in the
> applications.  It is a good thing for lisp developers to be able to
> rely on asdf (uiop) as a portability library for those features, thanks
> to ASDF ubiquity.
>
Yes, being able to portably (require "asdf") is great.
LispWorks 6.1 does it, but only has an antique ASDF 2 by now.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Law is always law of the strongest. The only question is what feedback
mechanism selects this strongest and controls his behavior.

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Re: lispworks 7.0

Seriously? ASDF and Quicklisp are part of some evil plot to subvert
and control a "community" of victims?

Anyone who holds that belief is welcome to bootstrap the insurrection.
IMO that is a solution without a problem.

I for one would welcome our Google overlords, if that is the price for
getting more / better tools and services widely available.

As for ASDF, I commend the creators and maintainers for the fine job
they've done over the years. I see no reason to support competing
versions of DEFSYSTEM. I am immeasurably grateful to Faré for ASDF3,
and to Xach for providing Quicklisp with hooks into ASDF. They've
helped to drag Common Lisp kicking and screaming into the 21st
century.

The alternative scenario? We could have continued to suffer with
problems the Java community solved on the 6th day of creation.

kmc

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Re: lispworks 7.0

On Fri, Apr 10, 2015 at 1:45 PM, John C. Mallery <jcma@csail.mit.edu> wrote:
> Try doing a security review of ASDF.
>
That's an interesting concept. In which context? What is the attack model?

At ITA as well as at Google, all dependencies are checked into source
control, and nothing is downloaded from the Internet.

ASDF doesn't download anything automatically by default, if that's
what you mean.

Maybe you meant a security review of Quicklisp, that does hook into
ASDF and provide auto-download magic.
But Quicklisp also can work without an internet connection.

How is ASDF more of a security issue than any build system for CL,
defsystem or not?

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
"How many libertarians does it take to change a lightbulb?"
A- "None, the market will take care of it."
B- "Every one of them and non-libs too, because we all *are* the market."
C- "*I*'ll do it, for a dollar."

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Re: lispworks 7.0

My apologies gentlemen but I seem to have been abducted and thrown into the deep end with you advanced entities from Zeta Polaris IV. Please could you point me in the general direction of the Lispworks preschool as I am yet to utter my first "hello" "daddy" and "mommy" in LISP yet?

Kind regards,
Aykay Akpan

On Apr 10, 2015 7:43 PM, "Keith Corbett" <kmcorbett@gmail.com> wrote:

Seriously? ASDF and Quicklisp are part of some evil plot to subvert
and control a "community" of victims?

Anyone who holds that belief is welcome to bootstrap the insurrection.
IMO that is a solution without a problem.

I for one would welcome our Google overlords, if that is the price for
getting more / better tools and services widely available.

As for ASDF, I commend the creators and maintainers for the fine job
they've done over the years. I see no reason to support competing
versions of DEFSYSTEM. I am immeasurably grateful to Faré for ASDF3,
and to Xach for providing Quicklisp with hooks into ASDF. They've
helped to drag Common Lisp kicking and screaming into the 21st
century.

The alternative scenario? We could have continued to suffer with
problems the Java community solved on the 6th day of creation.

kmc

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html

Re: lispworks 7.0

Are you looking for books on Common Lisp? There is no shortage of recommendations to be found online. But since (I think) you asked here:

Every Common Lisp developer can benefit from the classic reference "Common Lisp Hyper Spec". (Kent Pitman, ed.) The HyperSpec is freely available online at URL: 

http://www.lispworks.com/documentation/HyperSpec/

There are several great Common Lisp tutorials and cookbooks in print. Some are aimed at beginners, others for intermediate and expert developers. My query on Amazon for "Common Lisp books" yielded results by authors who are very highly regarded in the field. See below for a list of my favorite authors.

In addition, there are books that cover a wide range of Lisp theory and practice. Many of these are based on other Lisp dialects, notably Scheme and Clojure. 

Finally, functional programming and AI are more general topics that are of interest to many Lisp developers.

Keith M Corbett
kmcorbett@gmail.com
+1 617 620 6749

Paul Graham
Sonya Keene
Peter Norvig
Peter Seibel
Guy Steele
Edi Weitz
Patrick Winston

_____________________________
From: Aykay Akpan <ak.aronu@gmail.com>
Sent: Saturday, April 25, 2015 11:17 AM
Subject: Re: lispworks 7.0
To: Keith Corbett <kmcorbett@gmail.com>
Cc: Lispworks HUG <lisp-hug@lispworks.com>, Pascal J. Bourguignon <pjb@informatimago.com>, Faré <fahree@gmail.com>


My apologies gentlemen but I seem to have been abducted and thrown into the deep end with you advanced entities from Zeta Polaris IV. Please could you point me in the general direction of the Lispworks preschool as I am yet to utter my first "hello" "daddy" and "mommy" in LISP yet?

Kind regards,
Aykay Akpan

On Apr 10, 2015 7:43 PM, "Keith Corbett" < kmcorbett@gmail.com> wrote:

Seriously? ASDF and Quicklisp are part of some evil plot to subvert
and control a "community" of victims?

Anyone who holds that belief is welcome to bootstrap the insurrection.
IMO that is a solution without a problem.

I for one would welcome our Google overlords, if that is the price for
getting more / better tools and services widely available.

As for ASDF, I commend the creators and maintainers for the fine job
they've done over the years. I see no reason to support competing
versions of DEFSYSTEM. I am immeasurably grateful to Faré for ASDF3,
and to Xach for providing Quicklisp with hooks into ASDF.. They've
helped to drag Common Lisp kicking and screaming into the 21st
century.

The alternative scenario? We could have continued to suffer with
problems the Java community solved on the 6th day of creation.

kmc

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html



Re: lispworks 7.0

"Practical Common Lisp" was the book that got me interested in LISP, and it's free online here: http://www.gigamonkeys.com/book/

Mark


On Sat, Apr 25, 2015 at 5:23 PM, Keith Corbett <kmcorbett@gmail.com> wrote:
Are you looking for books on Common Lisp? There is no shortage of recommendations to be found online. But since (I think) you asked here:

Every Common Lisp developer can benefit from the classic reference "Common Lisp Hyper Spec". (Kent Pitman, ed.) The HyperSpec is freely available online at URL: 

http://www.lispworks.com/documentation/HyperSpec/

There are several great Common Lisp tutorials and cookbooks in print. Some are aimed at beginners, others for intermediate and expert developers. My query on Amazon for "Common Lisp books" yielded results by authors who are very highly regarded in the field. See below for a list of my favorite authors.

In addition, there are books that cover a wide range of Lisp theory and practice. Many of these are based on other Lisp dialects, notably Scheme and Clojure. 

Finally, functional programming and AI are more general topics that are of interest to many Lisp developers.

Keith M Corbett
kmcorbett@gmail.com
+1 617 620 6749

Paul Graham
Sonya Keene
Peter Norvig
Peter Seibel
Guy Steele
Edi Weitz
Patrick Winston

_____________________________
From: Aykay Akpan <ak.aronu@gmail.com>
Sent: Saturday, April 25, 2015 11:17 AM
Subject: Re: lispworks 7.0
To: Keith Corbett <kmcorbett@gmail.com>
Cc: Lispworks HUG <lisp-hug@lispworks.com>, Pascal J. Bourguignon <pjb@informatimago.com>, Faré <fahree@gmail.com>



My apologies gentlemen but I seem to have been abducted and thrown into the deep end with you advanced entities from Zeta Polaris IV. Please could you point me in the general direction of the Lispworks preschool as I am yet to utter my first "hello" "daddy" and "mommy" in LISP yet?

Kind regards,
Aykay Akpan

On Apr 10, 2015 7:43 PM, "Keith Corbett" < kmcorbett@gmail.com> wrote:

Seriously? ASDF and Quicklisp are part of some evil plot to subvert
and control a "community" of victims?

Anyone who holds that belief is welcome to bootstrap the insurrection.
IMO that is a solution without a problem.

I for one would welcome our Google overlords, if that is the price for
getting more / better tools and services widely available.

As for ASDF, I commend the creators and maintainers for the fine job
they've done over the years. I see no reason to support competing
versions of DEFSYSTEM. I am immeasurably grateful to Faré for ASDF3,
and to Xach for providing Quicklisp with hooks into ASDF. They've
helped to drag Common Lisp kicking and screaming into the 21st
century.

The alternative scenario? We could have continued to suffer with
problems the Java community solved on the 6th day of creation.

kmc

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html




Re: lispworks 7.0

A great first book is ’The little Lisper’ by Dan Friedman, renamed ‘the little Schemer’ in the 4/e.




On Apr 25, 2015, at 11:17 AM, Aykay Akpan <ak.aronu@gmail.com> wrote:

My apologies gentlemen but I seem to have been abducted and thrown into the deep end with you advanced entities from Zeta Polaris IV. Please could you point me in the general direction of the Lispworks preschool as I am yet to utter my first "hello" "daddy" and "mommy" in LISP yet?

Kind regards,
Aykay Akpan


RE: lispworks 7.0

Hi Aykay,

 

I think this is a fairly common feeling when first starting out with any Lisp. I don’t know if you are already proficient in some other ALGOL based language, but that makes it worse. I felt like “Successful Lisp” was helpful for me. You can find it online at http://psg.com/~dlamkins/sl/. However, I think the best way to learn Lisp is to use it. I started by making a list of some common things I would want to do and just worked through them. There are many open source packages that make great examples. For example, I started with cl-json. I played with it until I could make it do everything that was possible. I then added clsql and continued. Eventually, the common programming patterns will come to the surface and you can start applying those to your own code. I tend to be a little impatient and it took some time until I could settle down and just give it the time it deserved. I hope this helps.

 

BTW: Don’t get distracted by people talking about what is and isn’t “Lispy” code. That will come over time and through experience. You can’t expect to jump into a 747 and fly it like a Piper Cub. There are many, many more dials and buttons ;-)

 

 

Thanks,

-G

 

 

From: owner-lisp-hug@lispworks.com [mailto:owner-lisp-hug@lispworks.com] On Behalf Of Bradford Miller
Sent: Saturday, April 25, 2015 8:21 PM
To: Aykay Akpan
Cc: Lispworks HUG
Subject: Re: lispworks 7.0

 

A great first book is ’The little Lisper’ by Dan Friedman, renamed ‘the little Schemer’ in the 4/e.

 

 

 

On Apr 25, 2015, at 11:17 AM, Aykay Akpan <ak.aronu@gmail.com> wrote:

 

My apologies gentlemen but I seem to have been abducted and thrown into the deep end with you advanced entities from Zeta Polaris IV. Please could you point me in the general direction of the Lispworks preschool as I am yet to utter my first "hello" "daddy" and "mommy" in LISP yet?

Kind regards,
Aykay Akpan

 

Updated at: 2020-12-10 08:33 UTC