Joss-reviews: [REVIEW]: DE-Sim: an object-oriented, discrete-event simulation tool for data-intensive modeling of complex systems in Python

Created on 18 Sep 2020  ยท  77Comments  ยท  Source: openjournals/joss-reviews

Submitting author: @artgoldberg (Arthur Goldberg)
Repository: https://github.com/KarrLab/de_sim
Version: 1.0.5
Editor: @danielskatz
Reviewers: @gonsie, @carothersc, @yadudoc
Archive: 10.5281/zenodo.4274852

:warning: JOSS reduced service mode :warning:

Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.

Status

status

Status badge code:

HTML: <a href="https://joss.theoj.org/papers/e3ca43be9717d153672c48239939e993"><img src="https://joss.theoj.org/papers/e3ca43be9717d153672c48239939e993/status.svg"></a>
Markdown: [![status](https://joss.theoj.org/papers/e3ca43be9717d153672c48239939e993/status.svg)](https://joss.theoj.org/papers/e3ca43be9717d153672c48239939e993)

Reviewers and authors:

Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)

Reviewer instructions & questions

@gonsie & @carothersc, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:

  1. Make sure you're logged in to your GitHub account
  2. Be sure to accept the invite at this URL: https://github.com/openjournals/joss-reviews/invitations

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @danielskatz know.

โœจ Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest โœจ

Review checklist for @gonsie

Conflict of interest

  • [x] I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.

Code of Conduct

General checks

  • [x] Repository: Is the source code for this software available at the repository url?
  • [x] License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • [x] Contribution and authorship: Has the submitting author (@artgoldberg) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?
  • [x] Substantial scholarly effort: Does this submission meet the scope eligibility described in the JOSS guidelines

Functionality

  • [x] Installation: Does installation proceed as outlined in the documentation?
  • [x] Functionality: Have the functional claims of the software been confirmed?
  • [x] Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • [x] A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • [x] Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • [x] Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • [x] Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • [x] Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • [x] Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • [x] Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • [x] A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • [x] State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • [x] Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • [x] References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?

Review checklist for @carothersc

Conflict of interest

  • [x] I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.

Code of Conduct

General checks

  • [x] Repository: Is the source code for this software available at the repository url?
  • [ ] License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • [x] Contribution and authorship: Has the submitting author (@artgoldberg) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?
  • [x] Substantial scholarly effort: Does this submission meet the scope eligibility described in the JOSS guidelines

Functionality

  • [x] Installation: Does installation proceed as outlined in the documentation?
  • [ ] Functionality: Have the functional claims of the software been confirmed?
  • [x] Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • [x] A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • [ ] Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • [ ] Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • [ ] Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • [ ] Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • [ ] Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • [ ] Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • [x] A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • [x] State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • [ ] Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • [x] References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?

Review checklist for @yadudoc

Conflict of interest

  • [x] I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.

Code of Conduct

General checks

  • [x] Repository: Is the source code for this software available at the repository url?
  • [x] License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • [x] Contribution and authorship: Has the submitting author (@artgoldberg) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?
  • [x] Substantial scholarly effort: Does this submission meet the scope eligibility described in the JOSS guidelines

Functionality

  • [x] Installation: Does installation proceed as outlined in the documentation?
  • [x] Functionality: Have the functional claims of the software been confirmed?
  • [x] Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • [x] A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • [x] Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • [x] Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • [x] Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • [x] Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • [x] Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • [x] Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • [x] A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • [x] State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • [x] Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • [x] References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?
JavaScript Jupyter Notebook Python accepted published recommend-accept review

All 77 comments

Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @gonsie, @carothersc it looks like you're currently assigned to review this paper :tada:.

:warning: JOSS reduced service mode :warning:

Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.

:star: Important :star:

If you haven't already, you should seriously consider unsubscribing from GitHub notifications for this (https://github.com/openjournals/joss-reviews) repository. As a reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all reviews ๐Ÿ˜ฟ

To fix this do the following two things:

  1. Set yourself as 'Not watching' https://github.com/openjournals/joss-reviews:

watching

  1. You may also like to change your default settings for this watching repositories in your GitHub profile here: https://github.com/settings/notifications

notifications

For a list of things I can do to help you, just type:

@whedon commands

For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:

@whedon generate pdf
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1145/2901378.2901402 is OK
- 10.1177/003754978704900506 is OK
- 10.1109/DATE.2001.915002 is OK
- 10.1109/WSC.2003.1261534 is OK
- 10.1109/PADS.2000.847144 is OK
- 10.1016/j.copbio.2017.12.013 is OK
- 10.25080/majora-92bf1922-00a is OK
- 10.1038/s41592-019-0686-2 is OK
- 10.1016/j.mib.2015.06.004 is OK
- 10.1016/j.cell.2012.05.044 is OK
- 10.1109/wodes.2006.382398 is OK
- 10.1109/wsc.2005.1574302 is OK

MISSING DOIs

- None

INVALID DOIs

- None

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

๐Ÿ‘‹ @gonsie, @carothersc - Thanks again for agreeing to review. Please read the comments above before starting.

This is the review thread for the paper. All of our communications will happen here from now on.

All reviewers have checklists at the top of this thread with the JOSS requirements. As you go over the submission, please check any items that you feel have been satisfied. There are also links to the JOSS reviewer guidelines.

The JOSS review is different from most other journals. Our goal is to work with the authors to help them meet our criteria instead of merely passing judgment on the submission. As such, the reviewers are encouraged to submit issues and pull requests on the software repository. When doing so, please mention openjournals/joss-reviews#2685 so that a link is created to this thread (and I can keep an eye on what is happening). Please also feel free to comment and ask questions on this thread. In my experience, it is better to post comments/questions/suggestions as you come across them instead of waiting until you've reviewed the entire package.

We aim for reviews to be completed within about 2-4 weeks. Please let me know if any of you require some more time. We can also use Whedon (our bot) to set automatic reminders if you know you'll be away for a known period of time.

Please feel free to ping me (@danielskatz) if you have any questions/concerns.

Thanks for getting started @gonsie
@carothersc, let me know if you need anything on your side

Hi @danielskatz. @gonsie finds that one of DE Sim's unit tests fails because of a problem in the capturer testing library. The test passes on multiple platforms (local, Docker on local, Docker in CircleCI) for me and I have not reproduced the capturer failure thus far. See KarrLab/de_sim#55 for the details.

How would you suggest we proceed?

Thanks
Arthur

It seems to me that either there is a problem that should be discussed in the documentation, with a workaround, or something else.

Thanks @danielskatz

OK. I have replaced the failing code in DE Sim's tests with a method from Python's standard library that will hopefully avoid the problem. See KarrLab/de_sim#55 for further details.

Arthur

Hello @danielskatz

I'm available to address any other issues reviewers raise.

Arthur

@gonsie & @carothersc - can I get an update on your review status? It would be great to get this moving a bit further along...

@whedon re-invite @carothersc as reviewer

The reviewer already has a pending invite.

@carothersc please accept the invite by clicking this link: https://github.com/openjournals/joss-reviews/invitations

@whedon re-invite @carothersc as reviewer

OK, the reviewer has been re-invited.

@carothersc please accept the invite by clicking this link: https://github.com/openjournals/joss-reviews/invitations

Hello @danielskatz

I'm beginning to wonder whether Prof. Carothers (@carothersc) will review this paper. I can expand my list of potential reviewers if you would like.

Arthur

I was in email contact with @carothersc last week, and he said he should be able to do it soon

Thanks @danielskatz

Hi all - given that Elsa has confirmed running the software on her side do I need to do the same ? Also, can someone confirm that "pip" won't do anything bad to local "conda" repos?

Thanks everyone!,
Chris

We expect the reviewers to be independent in terms of investigation, though they may work together in documenting problems and suggesting solutions.

Re pip, I suggest the safest thing is to create a new conda environment for this review

@carothersc another approach that would not risk harming your Python computing environment would be to run DE Sim's tests in a Docker image, as I describe in this comment.

I have completed my review and I approve this paper for acceptance.

I do think there is room for improvement with the model examples given. They are given as complete models, with no description of the process for creating a model. There are a lot of python features that model developers can take advantage of, but it may be hard to discover these without direct support from the de_sim team. Other than that, everything looks great.

Thanks @gonsie . Can DE-Sim issue #55 be closed?

Arthur

Thanks @gonsie - I'm a little confused, since you both say "I approve this paper for acceptance" and you have checked all the review boxes, but you also have opened issues. Does this mean that these issues are optional to you: suggestions but not requirements?

@danielskatz yes. The issues are optional. They are small issues that need not be fixed for my acceptance.

Hello @danielskatz

If Chris is not able to review our paper, perhaps another reviewer could step in. Among the other potential reviewers I recommended in the PRE REVIEW, I would suggest Robert Clayton Blake. He has the appropriate discrete-event simulation and software expertise, and has, in general, been responsive in recent years.

Regards
Arthur

@carothersc - can you give us a firm date here by when you can do this so we know if we should bring in another reviewer instead of you?

I have email from @carothersc that he is not able to complete this due to teaching responsibilities

๐Ÿ‘‹ @rblake-llnl - would you be willing to review this submission for JOSS? We carry out our checklist-driven reviews here in GitHub issues and follow these guidelines: https://joss.readthedocs.io/en/latest/review_criteria.html

(and we already have one complete review, so I hope nothing major will come up)

๐Ÿ‘‹ @yadudoc - would you be willing to review this submission for JOSS? We carry out our checklist-driven reviews here in GitHub issues and follow these guidelines: https://joss.readthedocs.io/en/latest/review_criteria.html

@danielskatz, I can review.

Thanks @yadudoc - I'm going to create a checklist for you, and invite you. You will need to accept the invitation, then you can work through the checklist items. You should look at the first couple of issues above regarding notifications as well - let me know what else I can do to help you.

@whedon add @yadudoc as reviewer

OK, @yadudoc is now a reviewer

@whedon re-invite @yadudoc as reviewer

The reviewer already has a pending invite.

@yadudoc please accept the invite by clicking this link: https://github.com/openjournals/joss-reviews/invitations

@yadudoc - you now have a checklist at the top of this thread with the JOSS requirements. As you go over the submission, please check any items that you feel have been satisfied. There are also links to the JOSS reviewer guidelines.

The JOSS review is different from most other journals. Our goal is to work with the authors to help them meet our criteria instead of merely passing judgment on the submission. As such, the reviewers are encouraged to submit issues and pull requests on the software repository. When doing so, please mention #2685 so that a link is created to this thread (and I can keep an eye on what is happening). Please also feel free to comment and ask questions on this thread. In my experience, it is better to post comments/questions/suggestions as you come across them instead of waiting until you've reviewed the entire package.

We aim for reviews to be completed within about 2-4 weeks. Please let me know if any of you require some more time. We can also use Whedon (our bot) to set automatic reminders if you know you'll be away for a known period of time.

Please feel free to ping me (@danielskatz) if you have any questions/concerns.

@artgoldberg, I have completed my review, I'm posting my notes below.

The DE-Sim repo appears to be in good order. It is well documented, and with the contributing guide, I was able to install, run tests and do some tinkering on my laptop without issues. The one error I found, is listed as a github issue.

The manuscript is written well and clearly lays out the problem space, the motivation, and the advantages offered by DE-Sim. The Jupyter notebooks complement the documentation well and serve well to explain how the software could be used. I have added a recommendation to expand on tool integration, a key feature described in the manuscript.

Required issues opened:

Optional issues opened:

@yadudoc - are you holding off on the final checkmark in your review until KarrLab/de_sim#63 is resolved? Or is there something else?

@danielskatz That issue(https://github.com/KarrLab/de_sim/issues/63) is the only blocker from my end. Apart from this one item, I would recommend accepting this paper.

I appreciate your feedback @yadudoc. Please excuse my slow response. I've been out campaigning for Biden in PA. I'll investigate your issues, especially #63 soon.

Arthur

Hi @danielskatz, the issue (https://github.com/KarrLab/de_sim/issues/63) with the tests is now resolved. I recommend this paper for acceptance.

Thanks @yadudoc

@whedon generate pdf

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

๐Ÿ‘‹ @artgoldberg - At this point I'm going to proofread the paper

@whedon check references

Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1145/2901378.2901402 is OK
- 10.1177/003754978704900506 is OK
- 10.1109/DATE.2001.915002 is OK
- 10.1109/WSC.2003.1261534 is OK
- 10.1109/PADS.2000.847144 is OK
- 10.1016/j.copbio.2017.12.013 is OK
- 10.25080/majora-92bf1922-00a is OK
- 10.1038/s41592-019-0686-2 is OK
- 10.1016/j.mib.2015.06.004 is OK
- 10.1016/j.cell.2012.05.044 is OK
- 10.1109/wodes.2006.382398 is OK
- 10.1109/wsc.2005.1574302 is OK

MISSING DOIs

- None

INVALID DOIs

- None

๐Ÿ‘‹ @artgoldberg - this all looks good to me. At this point could you:

  • [ ] Make a tagged release of your software, and list the version tag of the archived version here.
  • [ ] Archive the reviewed software in Zenodo or a similar service (e.g., figshare, an institutional repository)
  • [ ] Check the archival deposit (e.g., in Zenodo) has the correct metadata. This includes the title (should match the paper title) and author list (make sure the list is correct and people who only made a small fix are not on it). You may also add the authors' ORCID.
  • [ ] Please list the DOI of the archived version here.

I can then move forward with accepting the submission.

Thanks @danielskatz
I will do that. I'm also cleaning up a few things in the repo, such as making sure that all version numbers and publication dates are correct, and addressing a suggestion @yadudoc made in issue #63.

Hi @danielskatz
What publication date should I put in the paper.md file?

It's not really a publication date, more a "written on" data, so I would say today :)

Thanks!

@danielskatz FYI, it may take a few days for me to provide the final version of the paper and the archive DOI. I want my co-author Prof. Karr to have an opportunity to review them, but he's busy with a new child.

@whedon commands

Here are some things you can ask me to do:

# List Whedon's capabilities
@whedon commands

# List of editor GitHub usernames
@whedon list editors

# List of reviewers together with programming language preferences and domain expertise
@whedon list reviewers

EDITORIAL TASKS

# Compile the paper
@whedon generate pdf

# Compile the paper from alternative branch
@whedon generate pdf from branch custom-branch-name

# Ask Whedon to check the references for missing DOIs
@whedon check references

# Ask Whedon to check repository statistics for the submitted software
@whedon check repository

Hi @danielskatz

The paper you compiled with Whedon looks fine. Jonathan and I made a couple of dozen small changes to fix typos, improve wording, and clarify a couple of points.

I've created a tagged release of de-sim, with tag 1.0.4.
This release is archived at Zenodo with DOI 10.5281/zenodo.4274852.

Thanks

Arthur

@whedon generate pdf

I'll do most of the rest of the processing tomorrow...

@whedon set 1.0.5 as version

OK. 1.0.5 is the version.

@whedon set 10.5281/zenodo.4274852 as archive

OK. 10.5281/zenodo.4274852 is the archive.

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

@whedon accept

Attempting dry run of processing paper acceptance...
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1145/2901378.2901402 is OK
- 10.1177/003754978704900506 is OK
- 10.1109/DATE.2001.915002 is OK
- 10.1109/WSC.2003.1261534 is OK
- 10.1109/PADS.2000.847144 is OK
- 10.1016/j.copbio.2017.12.013 is OK
- 10.25080/majora-92bf1922-00a is OK
- 10.1038/s41592-019-0686-2 is OK
- 10.1016/j.mib.2015.06.004 is OK
- 10.1016/j.cell.2012.05.044 is OK
- 10.1109/wodes.2006.382398 is OK
- 10.1109/wsc.2005.1574302 is OK

MISSING DOIs

- None

INVALID DOIs

- None

:wave: @openjournals/joss-eics, this paper is ready to be accepted and published.

Check final proof :point_right: https://github.com/openjournals/joss-papers/pull/1917

If the paper PDF and Crossref deposit XML look good in https://github.com/openjournals/joss-papers/pull/1917, then you can now move forward with accepting the submission by compiling again with the flag deposit=true e.g.
@whedon accept deposit=true

@openjournals/dev - note that in the xml to be submitted to Crossref, the ~ in the Matloff unstructured citation has been turned into a space. There's probably a bug in parsing somewhere... Can we (you) manually fix this in this case? If so, now or after I do the actual accept?

@whedon accept deposit=true

Doing it live! Attempting automated processing of paper acceptance...

๐Ÿฆ๐Ÿฆ๐Ÿฆ ๐Ÿ‘‰ Tweet for this paper ๐Ÿ‘ˆ ๐Ÿฆ๐Ÿฆ๐Ÿฆ

๐Ÿšจ๐Ÿšจ๐Ÿšจ THIS IS NOT A DRILL, YOU HAVE JUST ACCEPTED A PAPER INTO JOSS! ๐Ÿšจ๐Ÿšจ๐Ÿšจ

Here's what you must now do:

  1. Check final PDF and Crossref metadata that was deposited :point_right: https://github.com/openjournals/joss-papers/pull/1918
  2. Wait a couple of minutes to verify that the paper DOI resolves https://doi.org/10.21105/joss.02685
  3. If everything looks good, then close this review issue.
  4. Party like you just published a paper! ๐ŸŽ‰๐ŸŒˆ๐Ÿฆ„๐Ÿ’ƒ๐Ÿ‘ป๐Ÿค˜

    Any issues? Notify your editorial technical team...

Congratulations to @artgoldberg (Arthur Goldberg) and co-author!!

and thanks to @gonsie & @yadudoc for reviewing!

:tada::tada::tada: Congratulations on your paper acceptance! :tada::tada::tada:

If you would like to include a link to your paper from your README use the following code snippets:

Markdown:
[![DOI](https://joss.theoj.org/papers/10.21105/joss.02685/status.svg)](https://doi.org/10.21105/joss.02685)

HTML:
<a style="border-width:0" href="https://doi.org/10.21105/joss.02685">
  <img src="https://joss.theoj.org/papers/10.21105/joss.02685/status.svg" alt="DOI badge" >
</a>

reStructuredText:
.. image:: https://joss.theoj.org/papers/10.21105/joss.02685/status.svg
   :target: https://doi.org/10.21105/joss.02685

This is how it will look in your documentation:

DOI

We need your help!

Journal of Open Source Software is a community-run journal and relies upon volunteer effort. If you'd like to support us please consider doing either one (or both) of the the following:

@openjournals/dev - note that in the xml to be submitted to Crossref, the ~ in the Matloff unstructured citation has been turned into a space. There's probably a bug in parsing somewhere... Can we (you) manually fix this in this case? If so, now or after I do the actual accept?

@danielskatz - Crossref deposit XML is fixed up now and I've opened an issue (https://github.com/openjournals/whedon-api/issues/122) to track this bug.

@danielskatz Greatly appreciate your patience, effort, persistence and care reviewing our paper. Great catch of the s/~/ / bug in, it appears, the LaTeX converter.

I see that you enjoy sailing. Me too. If you come to New York during warm weather, let me know and I'll gladly take you sailing at the City Island Yacht Club.

Was this page helpful?
0 / 5 - 0 ratings