From 8386f8c3c81e7016165ecec656d40865f09baf6c Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Sat, 31 Jan 2026 07:38:09 +0100 Subject: [PATCH 01/10] add license --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. From 4bbde1e96b14235d3277a3b3f14c99ce51b41248 Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Mon, 2 Feb 2026 12:24:41 +0100 Subject: [PATCH 02/10] commit full pages --- .github/workflows/deploy.yml | 55 --- .gitignore | 3 - dist/index.html | 549 +++++++++++++++++++++++++++++ dist/presentations/index.html | 160 +++++++++ dist/projects/index.html | 225 ++++++++++++ dist/publications/index.html | 640 ++++++++++++++++++++++++++++++++++ dist/teaching/index.html | 93 +++++ 7 files changed, 1667 insertions(+), 58 deletions(-) delete mode 100644 .github/workflows/deploy.yml create mode 100644 dist/index.html create mode 100644 dist/presentations/index.html create mode 100644 dist/projects/index.html create mode 100644 dist/publications/index.html create mode 100644 dist/teaching/index.html diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index 9415d7f..0000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: Deploy to GitHub Pages - -on: - push: - branches: - - main - -permissions: - contents: read - pages: write - id-token: write - -concurrency: - group: "pages" - cancel-in-progress: false - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install uv - uses: astral-sh/setup-uv@v4 - with: - enable-cache: true - - - name: Set up Python - run: uv python install - - - name: Install dependencies - run: uv sync - - - name: Build site - run: uv run python generate.py - - - name: Setup Pages - uses: actions/configure-pages@v5 - - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - path: './dist' - - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index fd057e7..9b42106 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1 @@ -dist/*.html -dist/*/index.html -dist/.nojekyll .direnv/ diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..315a8b3 --- /dev/null +++ b/dist/index.html @@ -0,0 +1,549 @@ + + + + + + + Yan Lin's Homepage + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + + + + + +
+
+ +
+
+ + + + + + + +
+
+ +
+ + +
+
+

Biography - Yan Lin

+

+ I am currently a postdoctoral researcher in the Department of + Computer Science at Aalborg University, Denmark. I received my PhD and + Bachelor's degrees from Beijing Jiaotong University, China. My + research interests include spatiotemporal data mining, + representation learning, and AI for science. +

+
+
+ + + +
+
+

+ Publications +

+
+ + View All + +
+
+
+
+
+

+ KDD | 2026 +

+
+ +
+
+
RIPCN: A Road Impedance Principal Component Network for Probabilistic Traffic Flow Forecasting
+

Haochen Lv*, Yan Lin*, Shengnan Guo, Xiaowei Mao, Hong Nie, Letian Gong, Youfang Lin, Huaiyu Wan

+
+
+

+ NeurIPS | 2025 +

+
+ + Poster + +
+
+
TrajMamba: An Efficient and Semantic-rich Vehicle Trajectory Pre-training Model
+

Yichen Liu*, Yan Lin*, Shengnan Guo, Zeyu Zhou, Youfang Lin, Huaiyu Wan

+
+
+

+ NeurIPS | 2025 +

+
+ + Oral + + Poster + + Preprint + +
+
+
TransferTraj: A Vehicle Trajectory Learning Model for Region and Task Transferability
+

Tonglong Wei*, Yan Lin*, Zeyu Zhou, Haomin Wen, Jilin Hu, Shengnan Guo, Youfang Lin, Gao Cong, Huaiyu Wan

+
+
+

+ NeurIPS | 2025 +

+
+ + Poster + + Preprint + +
+
+
PLMTrajRec: A Scalable and Generalizable Trajectory Recovery Method with Pre-trained Language Models
+

Tonglong Wei*, Yan Lin*, Youfang Lin, Shengnan Guo, Jilin Hu, Haitao Yuan, Gao Cong, Huaiyu Wan

+
+
+

+ IEEE TKDE | 2025 +

+
+ + Paper + + Preprint + + Code + +
+
+
UVTM: Universal Vehicle Trajectory Modeling with ST Feature Domain Generation
+

Yan Lin, Jilin Hu, Shengnan Guo, Bin Yang, Christian S. Jensen, Youfang Lin, Huaiyu Wan

+
+
+

+ IJCAI | 2025 +

+
+ + Paper + + Preprint + + Code + +
+
+
TrajCogn: Leveraging LLMs for Cognizing Movement Patterns and Travel Purposes from Trajectories
+

Zeyu Zhou*, Yan Lin*, Haomin Wen, Shengnan Guo, Jilin Hu, Youfang Lin, Huaiyu Wan

+
+
+
+
+
+
+

+ KDD | 2026 +

+
+ + Preprint + +
+
+
Traj-MLLM: Can Multimodal Large Language Models Reform Trajectory Data Mining?
+

Shuo Liu, Di Yao, Yan Lin, Gao Cong, Jingping Bi

+
+
+

+ AAAI | 2026 +

+
+ +
+
+
SculptDrug: A Spatial Condition-Aware Bayesian Flow Model for Structure-based Drug Design
+

Qingsong Zhong, Haomin Yu, Yan Lin, Wangmeng Shen, Long Zeng, Jilin Hu

+
+
+

+ AAAI | 2026 +

+
+ +
+
+
Spatial-Temporal Feedback Diffusion Guidance for Controlled Traffic Imputation
+

Xiaowei Mao, Huihu Ding, Yan Lin, Tingrui Wu, Shengnan Guo, Dazhuo Qiu, Feiling Fang, Jilin Hu, Huaiyu Wan

+
+
+

+ KDD | 2025 +

+
+ + Paper + + Preprint + + Code + +
+
+
DUET: Dual Clustering Enhanced Multivariate Time Series Forecasting
+

Xiangfei Qiu, Xingjian Wu, Yan Lin, Chenjuan Guo, Jilin Hu, Bin Yang

+
+
+

+ IEEE TKDE | 2024 +

+
+ + Paper + + Preprint + + Code + +
+
+
Diff-RNTraj: A Structure-aware Diffusion Model for Road Network-constrained Trajectory Generation
+

Tonglong Wei, Youfang Lin, Shengnan Guo, Yan Lin, Yiheng Huang, Chenyang Xiang, Yuqing Bai, Menglu Ya, Huaiyu Wan

+
+
+

+ IEEE TKDE | 2024 +

+
+ + Paper + +
+
+
STCDM: Spatio-Temporal Contrastive Diffusion Model for Check-In Sequence Generation
+

Letian Gong, Shengnan Guo, Yan Lin, Yichen Liu, Erwen Zheng, Yiwei Shuang, Youfang Lin, Jilin Hu, Huaiyu Wan

+
+
+
+
+ * Equal Contribution +
+
+ + + +
+
+

+ Projects +

+
+ + View All + +
+
+
+
+
+

+ Fundamental Research Funds for the Central Universities of China +

+
+ +
+
+
Research on Prediction of User Travel Destination and Travel Time Based on Trajectory Representation Learning
+

Applies representation learning to trajectory data to transform original features into high-level information, improving the performance of downstream tasks such as travel time and destination prediction.

+
+
+

+ Personal Interest Project +

+
+ + Home + + Install + +
+
+
Development of OverleafCopilot - Empowering Academic Writing in Overleaf with Large Language Models
+

This project aims to develop a Browser extension to seamlessly integrate Large Language Models (such as ChatGPT) into the popular online academic writing platform, Overleaf.

+
+
+

+ Personal Interest Project +

+
+ + Website + + Code + +
+
+
Development of PromptGenius - All-purpose prompts for LLMs
+

This project focuses on developing a website that offers a wide range of prompt categories, enhancing the versatility of LLMs for various tasks and improving their output quality.

+
+
+
+
+
+
+

+ Villum Foundation +

+
+ +
+
+
Research on Inverse Design of Materials Using Diffusion Probabilistic Models
+

This project focuses on developing diffusion probabilistic models to first understand the relationship between chemistry/structure and material properties, then enable the inverse design of new materials with specific properties. This project currently supports my postdoctoral research position.

+
+
+

+ National Natural Science Foundation of China +

+
+ +
+
+
Research on Pre-training Representation Learning Methods of Spatial-temporal Trajectory Data for Traffic Prediction
+

This project aims to propose pre-training representation learning methods for spatial-temporal trajectory data, modeling multiple features to improve traffic prediction tasks. It demonstrates how trajectory representation learning can enhance traffic data mining.

+
+
+

+ National Natural Science Foundation of China +

+
+ +
+
+
Research on Spatial-temporal Trajectory Generation and Representation Learning Methods for Sparsity Problems
+

This project explores how to generate high-quality spatial-temporal trajectory data and corresponding representations to address sparsity-related issues, thereby supporting a variety of downstream tasks.

+
+
+
+
+ + + +
+
+

+ Teaching +

+
+ + View All + +
+
+
+
+

+ Fall 2025 | Aalborg University +

+
+ + Moodle + + Literature + +
+
+
AI Systems & Infrastructure
+ +

This course introduces students to streamlined interaction with AI models and systems, as well as implementation and deployment of scalable, production-ready AI systems on real-world infrastructures.

+ +
+
+
+ + + +
+
+

+ Presentations +

+
+ + View All + +
+
+
+
+

+ Oral Presentation | PNCS17 +

+
+ + Slides + +
+
+
AMDEN: Amorphous Materials DEnoising Network
+
+
+

+ Guest lecture | Aalborg University +

+
+ + Slides + +
+
+
Self-supervised Learning of Trajectory Data
+
+
+

+ Workshop presentation | KDD 2024 +

+
+ + Slides + + Paper + +
+
+
PLM4Traj: Leveraging Pre-trained Language Models for Cognizing Movement Patterns and Travel Purposes from Trajectories
+
+
+
+ + + +
+

Services

+
+
    + +
  • IEEE, ACM member
  • + +
  • Secretary of IEEE (Denmark Section) Computer Society
  • + +
  • Reviewer for journals: TKDE, TKDD, TIST, TII, and TVT
  • + +
  • Member of program committees of conferences: KDD, ICLR, NeurIPS, AAAI, CVPR, ICCV, IJCAI, WWW, and WACV
  • + +
+
+
+ + + + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/dist/presentations/index.html b/dist/presentations/index.html new file mode 100644 index 0000000..8ce9fc4 --- /dev/null +++ b/dist/presentations/index.html @@ -0,0 +1,160 @@ + + + + + + + Yan Lin's Presentations + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + + + + + +
+
+ +
+
+ + + +
+
+ + +
+ + +
+
+ +
+
+

+ Oral Presentation | PNCS17 +

+
+ + Slides + +
+
+
AMDEN: Amorphous Materials DEnoising Network
+
+ +
+
+

+ Guest lecture | Aalborg University +

+
+ + Slides + +
+
+
Self-supervised Learning of Trajectory Data
+
+ +
+
+

+ Workshop presentation | KDD 2024 +

+
+ + Slides + + Paper + +
+
+
PLM4Traj: Leveraging Pre-trained Language Models for Cognizing Movement Patterns and Travel Purposes from Trajectories
+
+ +
+
+

+ Paper Oral | SIGMOD 2024 +

+
+ + Slides + +
+
+
Origin-Destination Travel Time Oracle for Map-based Services
+
+ +
+
+

+ Tutorial | SpatialDI 2024 +

+
+ + Slides + +
+
+
Self-supervised Learning of Spatial-temporal Trajectories
+
+ +
+
+

+ Paper Oral | AAAI 2021 +

+
+ + Slides + +
+
+
Pre-training Context and Time Aware Location Embeddings from Spatial-Temporal Trajectories for User Next Location Prediction
+
+ +
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/dist/projects/index.html b/dist/projects/index.html new file mode 100644 index 0000000..dc0cf68 --- /dev/null +++ b/dist/projects/index.html @@ -0,0 +1,225 @@ + + + + + + + Yan Lin's Projects + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + + + + + +
+
+ +
+
+ + + +
+
+ + + +
+ + +
+
+ + +
+
+

+ Fundamental Research Funds for the Central Universities of China +

+
+ +
+
+
Research on Prediction of User Travel Destination and Travel Time Based on Trajectory Representation Learning
+

Applies representation learning to trajectory data to transform original features into high-level information, improving the performance of downstream tasks such as travel time and destination prediction.

+
+ + + +
+
+

+ Personal Interest Project +

+
+ + Home + + Install + +
+
+
Development of OverleafCopilot - Empowering Academic Writing in Overleaf with Large Language Models
+

This project aims to develop a Browser extension to seamlessly integrate Large Language Models (such as ChatGPT) into the popular online academic writing platform, Overleaf.

+
+ + + +
+
+

+ Personal Interest Project +

+
+ + Website + + Code + +
+
+
Development of PromptGenius - All-purpose prompts for LLMs
+

This project focuses on developing a website that offers a wide range of prompt categories, enhancing the versatility of LLMs for various tasks and improving their output quality.

+
+ + +
+
+
+ + +
+
+

+ Villum Foundation +

+
+ +
+
+
Research on Inverse Design of Materials Using Diffusion Probabilistic Models
+

This project focuses on developing diffusion probabilistic models to first understand the relationship between chemistry/structure and material properties, then enable the inverse design of new materials with specific properties. This project currently supports my postdoctoral research position.

+
+ + + +
+
+

+ National Natural Science Foundation of China +

+
+ +
+
+
Research on Pre-training Representation Learning Methods of Spatial-temporal Trajectory Data for Traffic Prediction
+

This project aims to propose pre-training representation learning methods for spatial-temporal trajectory data, modeling multiple features to improve traffic prediction tasks. It demonstrates how trajectory representation learning can enhance traffic data mining.

+
+ + + +
+
+

+ National Natural Science Foundation of China +

+
+ +
+
+
Research on Spatial-temporal Trajectory Generation and Representation Learning Methods for Sparsity Problems
+

This project explores how to generate high-quality spatial-temporal trajectory data and corresponding representations to address sparsity-related issues, thereby supporting a variety of downstream tasks.

+
+ + +
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/dist/publications/index.html b/dist/publications/index.html new file mode 100644 index 0000000..1b046c5 --- /dev/null +++ b/dist/publications/index.html @@ -0,0 +1,640 @@ + + + + + + + Yan Lin's Publications + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + + + + + +
+
+ +
+
+ + + +
+
+ + + +
+ + +
+
+ + +
+
+

+ KDD | 2026 +

+
+ +
+
+
RIPCN: A Road Impedance Principal Component Network for Probabilistic Traffic Flow Forecasting
+

Haochen Lv*, Yan Lin*, Shengnan Guo, Xiaowei Mao, Hong Nie, Letian Gong, Youfang Lin, Huaiyu Wan

+
+ + + +
+
+

+ NeurIPS | 2025 +

+
+ + Poster + +
+
+
TrajMamba: An Efficient and Semantic-rich Vehicle Trajectory Pre-training Model
+

Yichen Liu*, Yan Lin*, Shengnan Guo, Zeyu Zhou, Youfang Lin, Huaiyu Wan

+
+ + + +
+
+

+ NeurIPS | 2025 +

+
+ + Oral + + Poster + + Preprint + +
+
+
TransferTraj: A Vehicle Trajectory Learning Model for Region and Task Transferability
+

Tonglong Wei*, Yan Lin*, Zeyu Zhou, Haomin Wen, Jilin Hu, Shengnan Guo, Youfang Lin, Gao Cong, Huaiyu Wan

+
+ + + +
+
+

+ NeurIPS | 2025 +

+
+ + Poster + + Preprint + +
+
+
PLMTrajRec: A Scalable and Generalizable Trajectory Recovery Method with Pre-trained Language Models
+

Tonglong Wei*, Yan Lin*, Youfang Lin, Shengnan Guo, Jilin Hu, Haitao Yuan, Gao Cong, Huaiyu Wan

+
+ + + +
+
+

+ IEEE TKDE | 2025 +

+
+ + Paper + + Preprint + + Code + +
+
+
UVTM: Universal Vehicle Trajectory Modeling with ST Feature Domain Generation
+

Yan Lin, Jilin Hu, Shengnan Guo, Bin Yang, Christian S. Jensen, Youfang Lin, Huaiyu Wan

+
+ + + +
+
+

+ IJCAI | 2025 +

+
+ + Paper + + Preprint + + Code + +
+
+
TrajCogn: Leveraging LLMs for Cognizing Movement Patterns and Travel Purposes from Trajectories
+

Zeyu Zhou*, Yan Lin*, Haomin Wen, Shengnan Guo, Jilin Hu, Youfang Lin, Huaiyu Wan

+
+ + + +
+
+

+ IEEE TKDE | 2025 +

+
+ + Paper + + Preprint + + Code + +
+
+
UniTE: A Survey and Unified Pipeline for Pre-training Spatiotemporal Trajectory Embeddings
+

Yan Lin, Zeyu Zhou, Yicheng Liu, Haochen Lv, Haomin Wen, Tianyi Li, Yushuai Li, Christian S. Jensen, Shengnan Guo, Youfang Lin, Huaiyu Wan

+
+ + + +
+
+

+ WWW | 2025 +

+
+ + Paper + + Code + +
+
+
Path-LLM: A Multi-Modal Path Representation Learning by Aligning and Fusing with Large Language Models
+

Yongfu Wei*, Yan Lin*, Hongfan Gao, Ronghui Xu, Sean Bin Yang, Jilin Hu

+
+ + + +
+
+

+ AAAI | 2025 +

+
+ + Paper + + Preprint + +
+
+
DutyTTE: Deciphering Uncertainty in Origin-Destination Travel Time Estimation
+

Xiaowei Mao*, Yan Lin*, Shengnan Guo, Yubin Chen, Xingyu Xian, Haomin Wen, Qisen Xu, Youfang Lin, Huaiyu Wan

+
+ + + +
+
+

+ NeurIPS | 2024 +

+
+ + Paper + + Poster + +
+
+
Mobility-LLM: Learning Visiting Intentions and Travel Preference from Human Mobility Data with Large Language Models
+

Letian Gong*, Yan Lin*, Xinyue Zhang, Yiwen Lu, Xuedi Han, Yichen Liu, Shengnan Guo, Youfang Lin, Huaiyu Wan

+
+ + + +
+
+

+ SIGMOD | 2024 +

+
+ + Paper + + Preprint + + Code + +
+
+
Origin-Destination Travel Time Oracle for Map-based Services
+

Yan Lin, Huaiyu Wan, Jilin Hu, Shengnan Guo, Bin Yang, Christian S. Jensen, Youfang Lin

+
+ + + +
+
+

+ IEEE TKDE | 2023 +

+
+ + Paper + + Preprint + + Code + +
+
+
Pre-training General Trajectory Embeddings with Maximum Multi-view Entropy Coding
+

Yan Lin, Huaiyu Wan, Shengnan Guo, Jilin Hu, Christian S. Jensen, Youfang Lin

+
+ + + +
+
+

+ IEEE TKDE | 2022 +

+
+ + Paper + + Code + +
+
+
Pre-training Time-Aware Location Embeddings from Spatial-Temporal Trajectories
+

Huaiyu Wan, Yan Lin, Shengnan Guo, Youfang Lin

+
+ + + +
+
+

+ AAAI | 2021 +

+
+ + Paper + + Code + +
+
+
Pre-training Context and Time Aware Location Embeddings from Spatial-Temporal Trajectories for User Next Location Prediction
+

Yan Lin, Huaiyu Wan, Shengnan Guo, Youfang Lin

+
+ + +
+
+
+ + +
+
+

+ KDD | 2026 +

+
+ + Preprint + +
+
+
Traj-MLLM: Can Multimodal Large Language Models Reform Trajectory Data Mining?
+

Shuo Liu, Di Yao, Yan Lin, Gao Cong, Jingping Bi

+
+ + + +
+
+

+ AAAI | 2026 +

+
+ +
+
+
SculptDrug: A Spatial Condition-Aware Bayesian Flow Model for Structure-based Drug Design
+

Qingsong Zhong, Haomin Yu, Yan Lin, Wangmeng Shen, Long Zeng, Jilin Hu

+
+ + + +
+
+

+ AAAI | 2026 +

+
+ +
+
+
Spatial-Temporal Feedback Diffusion Guidance for Controlled Traffic Imputation
+

Xiaowei Mao, Huihu Ding, Yan Lin, Tingrui Wu, Shengnan Guo, Dazhuo Qiu, Feiling Fang, Jilin Hu, Huaiyu Wan

+
+ + + +
+
+

+ KDD | 2025 +

+
+ + Paper + + Preprint + + Code + +
+
+
DUET: Dual Clustering Enhanced Multivariate Time Series Forecasting
+

Xiangfei Qiu, Xingjian Wu, Yan Lin, Chenjuan Guo, Jilin Hu, Bin Yang

+
+ + + +
+
+

+ IEEE TKDE | 2024 +

+
+ + Paper + + Preprint + + Code + +
+
+
Diff-RNTraj: A Structure-aware Diffusion Model for Road Network-constrained Trajectory Generation
+

Tonglong Wei, Youfang Lin, Shengnan Guo, Yan Lin, Yiheng Huang, Chenyang Xiang, Yuqing Bai, Menglu Ya, Huaiyu Wan

+
+ + + +
+
+

+ IEEE TKDE | 2024 +

+
+ + Paper + +
+
+
STCDM: Spatio-Temporal Contrastive Diffusion Model for Check-In Sequence Generation
+

Letian Gong, Shengnan Guo, Yan Lin, Yichen Liu, Erwen Zheng, Yiwei Shuang, Youfang Lin, Jilin Hu, Huaiyu Wan

+
+ + + +
+
+

+ IEEE TKDE | 2024 +

+
+ + Paper + + Preprint + + Code + +
+
+
Micro-Macro Spatial-Temporal Graph-based Encoder-Decoder for Map-Constrained Trajectory Recovery
+

Tonglong Wei, Youfang Lin, Yan Lin, Shengnan Guo, Lan Zhang, Huaiyu Wan

+
+ + + +
+
+

+ KBS | 2024 +

+
+ + Paper + + Code + +
+
+
Inductive and Adaptive Graph Convolution Networks Equipped with Constraint Task for Spatial-Temporal Traffic Data Kriging
+

Tonglong Wei, Youfang Lin, Shengnan Guo, Yan Lin, Yiji Zhao, Xiyuan Jin, Zhihao Wu, Huaiyu Wan

+
+ + + +
+
+

+ IEEE TKDE | 2024 +

+
+ + Paper + + Preprint + +
+
+
Spatial-Temporal Cross-View Contrastive Pre-Training for Check-in Sequence Representation Learning
+

Letian Gong, Huaiyu Wan, Shengnan Guo, Li Xiucheng, Yan Lin, Erwen Zheng, Tianyi Wang, Zeyu Zhou, Youfang Lin

+
+ + + +
+
+

+ AAAI | 2023 +

+
+ + Paper + + Code + +
+
+
Contrastive Pre-training with Adversarial Perturbations for Check-In Sequence Representation Learning
+

Letian Gong, Youfang Lin, Shengnan Guo, Yan Lin, Tianyi Wang, Erwen Zheng, Zeyu Zhou, Huaiyu Wan

+
+ + + +
+
+

+ ESWA | 2023 +

+
+ + Paper + +
+
+
Adversarial Self-Attentive Time-Variant Neural Networks for Multi-Step Time Series Forecasting
+

Changxia Gao, Ning Zhang, Youru Li, Yan Lin, Huaiyu Wan

+
+ + + +
+
+

+ APIN | 2023 +

+
+ + Paper + +
+
+
Multi-scale Adaptive Attention-based Time-Variant Neural Networks for Multi-step Time Series Forecasting
+

Changxia Gao, Ning Zhang, Youru Li, Yan Lin, Huaiyu Wan

+
+ + + +
+
+

+ NeurIPS | 2023 +

+
+ + Paper + + Code + +
+
+
WITRAN: Water-wave Information Transmission and Recurrent Acceleration Network for Long-range Time Series Forecasting
+

Yuxin Jia, Youfang Lin, Xinyan Hao, Yan Lin, Shengnan Guo, Huaiyu Wan

+
+ + +
+ +
+ * Equal Contribution +
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/dist/teaching/index.html b/dist/teaching/index.html new file mode 100644 index 0000000..3f9eccf --- /dev/null +++ b/dist/teaching/index.html @@ -0,0 +1,93 @@ + + + + + + + Yan Lin's Teaching + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + + + + + +
+
+ +
+
+ + + +
+
+ + +
+ + +
+
+ +
+
+

+ Fall 2025 | Aalborg University +

+
+ + Moodle + + Literature + +
+
+
AI Systems & Infrastructure
+ +

This course introduces students to streamlined interaction with AI models and systems, as well as implementation and deployment of scalable, production-ready AI systems on real-world infrastructures.

+ +
+ +
+
+ +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file From a7786314887909f7fbd8f055106a4e7e9d9e3a4f Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Mon, 2 Feb 2026 13:40:11 +0100 Subject: [PATCH 03/10] move asset location --- {dist/assets => assets}/AAAI21 Oral PPT.pdf | Bin .../KDD_2024_Workshop_PLM4Traj.pdf | Bin {dist/assets => assets}/SIGMOD-Oral-PPT.pdf | Bin .../Self-supervised Learning of Trajectory Data.pdf | Bin {dist/assets => assets}/Talk on SpatialDI 2024.pdf | Bin {dist/assets => assets}/pncs17-slides.pdf | Bin 6 files changed, 0 insertions(+), 0 deletions(-) rename {dist/assets => assets}/AAAI21 Oral PPT.pdf (100%) rename {dist/assets => assets}/KDD_2024_Workshop_PLM4Traj.pdf (100%) rename {dist/assets => assets}/SIGMOD-Oral-PPT.pdf (100%) rename {dist/assets => assets}/Self-supervised Learning of Trajectory Data.pdf (100%) rename {dist/assets => assets}/Talk on SpatialDI 2024.pdf (100%) rename {dist/assets => assets}/pncs17-slides.pdf (100%) diff --git a/dist/assets/AAAI21 Oral PPT.pdf b/assets/AAAI21 Oral PPT.pdf similarity index 100% rename from dist/assets/AAAI21 Oral PPT.pdf rename to assets/AAAI21 Oral PPT.pdf diff --git a/dist/assets/KDD_2024_Workshop_PLM4Traj.pdf b/assets/KDD_2024_Workshop_PLM4Traj.pdf similarity index 100% rename from dist/assets/KDD_2024_Workshop_PLM4Traj.pdf rename to assets/KDD_2024_Workshop_PLM4Traj.pdf diff --git a/dist/assets/SIGMOD-Oral-PPT.pdf b/assets/SIGMOD-Oral-PPT.pdf similarity index 100% rename from dist/assets/SIGMOD-Oral-PPT.pdf rename to assets/SIGMOD-Oral-PPT.pdf diff --git a/dist/assets/Self-supervised Learning of Trajectory Data.pdf b/assets/Self-supervised Learning of Trajectory Data.pdf similarity index 100% rename from dist/assets/Self-supervised Learning of Trajectory Data.pdf rename to assets/Self-supervised Learning of Trajectory Data.pdf diff --git a/dist/assets/Talk on SpatialDI 2024.pdf b/assets/Talk on SpatialDI 2024.pdf similarity index 100% rename from dist/assets/Talk on SpatialDI 2024.pdf rename to assets/Talk on SpatialDI 2024.pdf diff --git a/dist/assets/pncs17-slides.pdf b/assets/pncs17-slides.pdf similarity index 100% rename from dist/assets/pncs17-slides.pdf rename to assets/pncs17-slides.pdf From da4ecd6305286eaa7a2f229bd41dd2aaa37fe609 Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Mon, 2 Feb 2026 15:21:41 +0100 Subject: [PATCH 04/10] fix asset links --- data.yaml | 12 ++++++------ dist/.nojekyll | 0 dist/index.html | 6 +++--- dist/presentations/index.html | 12 ++++++------ flake.nix | 3 +++ 5 files changed, 18 insertions(+), 15 deletions(-) create mode 100644 dist/.nojekyll diff --git a/data.yaml b/data.yaml index 544b34f..e95fe03 100644 --- a/data.yaml +++ b/data.yaml @@ -307,21 +307,21 @@ presentations: - "Oral Presentation" - "PNCS17" links: - Slides: "/assets/pncs17-slides.pdf" + Slides: "https://github.com/Logan-Lin/homepage/blob/main/assets/pncs17-slides.pdf" - title: "Self-supervised Learning of Trajectory Data" tags: - "Guest lecture" - "Aalborg University" links: - Slides: "/assets/Self-supervised Learning of Trajectory Data.pdf" + Slides: "https://github.com/Logan-Lin/homepage/blob/main/assets/Self-supervised%20Learning%20of%20Trajectory%20Data.pdf" - title: "PLM4Traj: Leveraging Pre-trained Language Models for Cognizing Movement Patterns and Travel Purposes from Trajectories" tags: - "Workshop presentation" - "KDD 2024" links: - Slides: "/assets/KDD_2024_Workshop_PLM4Traj.pdf" + Slides: "https://github.com/Logan-Lin/homepage/blob/main/assets/KDD_2024_Workshop_PLM4Traj.pdf" Paper: "https://arxiv.org/abs/2405.12459" - title: "Origin-Destination Travel Time Oracle for Map-based Services" @@ -329,21 +329,21 @@ presentations: - "Paper Oral" - "SIGMOD 2024" links: - Slides: "/assets/SIGMOD-Oral-PPT.pdf" + Slides: "https://github.com/Logan-Lin/homepage/blob/main/assets/SIGMOD-Oral-PPT.pdf" - title: "Self-supervised Learning of Spatial-temporal Trajectories" tags: - "Tutorial" - "SpatialDI 2024" links: - Slides: "/assets/Talk on SpatialDI 2024.pdf" + Slides: "https://github.com/Logan-Lin/homepage/blob/main/assets/Talk%20on%20SpatialDI%202024.pdf" - title: "Pre-training Context and Time Aware Location Embeddings from Spatial-Temporal Trajectories for User Next Location Prediction" tags: - "Paper Oral" - "AAAI 2021" links: - Slides: "/assets/AAAI21 Oral PPT.pdf" + Slides: "https://github.com/Logan-Lin/homepage/blob/main/assets/AAAI21%20Oral%20PPT.pdf" services: - "IEEE, ACM member" diff --git a/dist/.nojekyll b/dist/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/dist/index.html b/dist/index.html index 315a8b3..14b6c4a 100644 --- a/dist/index.html +++ b/dist/index.html @@ -471,7 +471,7 @@

@@ -483,7 +483,7 @@

@@ -495,7 +495,7 @@

- Slides + Slides Paper diff --git a/dist/presentations/index.html b/dist/presentations/index.html index 8ce9fc4..1fc4fac 100644 --- a/dist/presentations/index.html +++ b/dist/presentations/index.html @@ -60,7 +60,7 @@

@@ -74,7 +74,7 @@

@@ -88,7 +88,7 @@

- Slides + Slides Paper @@ -104,7 +104,7 @@

@@ -118,7 +118,7 @@

@@ -132,7 +132,7 @@

diff --git a/flake.nix b/flake.nix index bf4f33d..b3b036a 100644 --- a/flake.nix +++ b/flake.nix @@ -12,6 +12,9 @@ (writeShellScriptBin "serve" '' python generate.py && python watch.py '') + (writeShellScriptBin "build" '' + python generate.py + '') ]; shellHook = '' uv sync From 54e3135eb0d72b96d161422f542455dfb5368db3 Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Mon, 2 Feb 2026 16:54:25 +0100 Subject: [PATCH 05/10] minor adjust of style --- dist/css/index.css | 390 ++++++++++++++++++++++--------------------- dist/index.html | 7 +- templates/index.html | 7 +- 3 files changed, 199 insertions(+), 205 deletions(-) diff --git a/dist/css/index.css b/dist/css/index.css index 6009ab1..b9fd109 100644 --- a/dist/css/index.css +++ b/dist/css/index.css @@ -79,6 +79,46 @@ ul, ol { margin-bottom: 1rem; } +small { + font-size: 0.875em; +} + +hr { + margin: 1rem 0; + color: var(--text-secondary); + border: 0; + border-top: 1px solid; + opacity: 0.7; +} + +blockquote { + border-left: 4px solid var(--border-color); + margin: 1.5em 0; + padding: 0.5em 1em; + background-color: var(--background-secondary); +} + +blockquote p { + margin: 0; +} + +/* ===== TYPOGRAPHY (Element Styles) ===== */ +h3 { + font-size: 1.75rem; + font-weight: 500; + line-height: 1.2; + margin-top: 0; + margin-bottom: 0.5rem; +} + +h5 { + font-size: 1.25rem; + font-weight: 500; + line-height: 1.2; + margin-top: 0; + margin-bottom: 0.5rem; +} + /* ===== GRID SYSTEM ===== */ .container { --bs-gutter-x: 1.5rem; @@ -177,177 +217,6 @@ ul, ol { } } -/* ===== SPACING UTILITIES ===== */ -.m-0 { margin: 0 !important; } -.mt-1 { margin-top: 0.25rem !important; } -.mt-3 { margin-top: 1rem !important; } -.mt-4 { margin-top: 1.5rem !important; } -.mb-0 { margin-bottom: 0 !important; } -.mb-1 { margin-bottom: 0.25rem !important; } -.mb-3 { margin-bottom: 1rem !important; } -.mb-auto { margin-bottom: auto !important; } -.my-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; } -.my-4 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; } -.mx-2 { margin-left: 0.5rem !important; margin-right: 0.5rem !important; } -.mx-3 { margin-left: 1rem !important; margin-right: 1rem !important; } -.mx-auto { margin-left: auto !important; margin-right: auto !important; } - -.p-4 { padding: 1.5rem !important; } -.px-0 { padding-left: 0 !important; padding-right: 0 !important; } -.py-0 { padding-top: 0 !important; padding-bottom: 0 !important; } -.py-3 { padding-top: 1rem !important; padding-bottom: 1rem !important; } -.pt-3 { padding-top: 1rem !important; } -.pb-0 { padding-bottom: 0 !important; } -.ps-3 { padding-left: 1rem !important; } - -/* ===== DISPLAY UTILITIES ===== */ -.d-none { display: none !important; } -.d-inline { display: inline !important; } -.d-inline-block { display: inline-block !important; } -.d-block { display: block !important; } -.d-flex { display: flex !important; } - -@media (min-width: 768px) { - .d-md-none { display: none !important; } - .d-md-inline { display: inline !important; } - .d-md-block { display: block !important; } -} - -@media (min-width: 992px) { - .d-lg-none { display: none !important; } - .d-lg-inline { display: inline !important; } - .d-lg-inline-block { display: inline-block !important; } - .d-lg-block { display: block !important; } - .d-lg-flex { display: flex !important; } -} - -/* ===== FLEXBOX UTILITIES ===== */ -.flex-column { flex-direction: column !important; } -.flex-nowrap { flex-wrap: nowrap !important; } -.flex-grow-1 { flex-grow: 1 !important; } -.justify-content-between { justify-content: space-between !important; } -.justify-content-end { justify-content: flex-end !important; } -.justify-content-evenly { justify-content: space-evenly !important; } -.align-items-center { align-items: center !important; } - -@media (min-width: 768px) { - .flex-md-row { flex-direction: row !important; } -} - -/* ===== GAP UTILITIES ===== */ -.gap-2 { gap: 0.5rem !important; } -.gap-3 { gap: 1rem !important; } - -@media (min-width: 576px) { - .gap-sm-5 { gap: 3rem !important; } -} - -/* ===== TYPOGRAPHY ===== */ -h3 { - font-size: 1.75rem; - font-weight: 500; - line-height: 1.2; - margin-top: 0; - margin-bottom: 0.5rem; -} - -.h2 { - font-size: 2rem; - font-weight: 500; - line-height: 1.2; - margin: 0; -} - -.h4 { - font-size: 1.5rem; - font-weight: 500; - line-height: 1.2; - margin: 0; -} - -.h5 { - font-size: 1.25rem; - font-weight: 500; - line-height: 1.2; - margin: 0; -} - -h5 { - font-size: 1.25rem; - font-weight: 500; - line-height: 1.2; - margin-top: 0; - margin-bottom: 0.5rem; -} - -.text-center { text-align: center !important; } -.text-start { text-align: left !important; } -.fst-italic { font-style: italic !important; } -.lh-1 { line-height: 1 !important; } - -small { - font-size: 0.875em; -} - -/* ===== COLOR UTILITIES ===== */ -.text-secondary { - color: var(--text-secondary) !important; -} - -.text-muted { - color: var(--text-secondary) !important; -} - -.text-body-emphasis { - color: var(--text-color) !important; -} - -.bg-body-secondary { - background-color: var(--background-secondary) !important; -} - -.link-secondary { - color: var(--text-secondary) !important; - text-decoration: none; -} - -.link-secondary:hover { - color: var(--link-hover-color) !important; -} - -.border-secondary { - border-color: var(--border-color) !important; -} - -/* ===== BORDERS ===== */ -.border { - border: 1px solid var(--border-color) !important; -} - -.border-bottom { - border-bottom: 1px solid var(--border-color) !important; -} - -.rounded { - border-radius: 0.375rem !important; -} - -/* ===== SHADOWS ===== */ -.shadow-sm { - box-shadow: 0 0.125rem 0.25rem var(--shadow-color) !important; -} - -.shadow { - box-shadow: 0 0.5rem 1rem var(--shadow-color) !important; -} - -/* ===== POSITIONING ===== */ -.position-relative { position: relative !important; } -.position-static { position: static !important; } - -/* ===== SIZING ===== */ -.w-100 { width: 100% !important; } - /* ===== NAVIGATION ===== */ .navbar { position: relative; @@ -415,19 +284,9 @@ small { border: 1px solid var(--border-color); } -/* ===== HR ===== */ -hr { - margin: 1rem 0; - color: var(--border-color); - border: 0; - border-top: 1px solid; - opacity: 0.25; -} - /* ===== LINKS ===== */ .link { font-family: var(--link-font-family); - color: var(--link-color); text-decoration: none; } @@ -498,17 +357,6 @@ hr { color: var(--secondary-text); } -blockquote { - border-left: 4px solid var(--border-color); - margin: 1.5em 0; - padding: 0.5em 1em; - background-color: var(--background-secondary); -} - -blockquote p { - margin: 0; -} - footer { margin-top: 0rem; padding: 1rem 0; @@ -539,7 +387,163 @@ footer { } } -/* ===== TRANSITIONS ===== */ .transition-shadow { transition: box-shadow 0.2s ease-in-out; } + +/* ===== UTILITIES (must be last to override component styles) ===== */ + +/* Typography utilities */ +.h2 { + font-size: 2rem; + font-weight: 500; + line-height: 1.2; + margin: 0; +} + +.h4 { + font-size: 1.5rem; + font-weight: 500; + line-height: 1.2; + margin: 0; +} + +.h5 { + font-size: 1.25rem; + font-weight: 500; + line-height: 1.2; + margin: 0; +} + +.text-center { text-align: center; } +.text-start { text-align: left; } +.fst-italic { font-style: italic; } +.lh-1 { line-height: 1; } + +/* Color utilities */ +.text-secondary { + color: var(--text-secondary); +} + +.text-muted { + color: var(--text-secondary); +} + +.text-body-emphasis { + color: var(--text-color); +} + +.bg-body-secondary { + background-color: var(--background-secondary); +} + +.link-secondary { + color: var(--text-secondary); + text-decoration: none; +} + +.link-secondary:hover { + color: var(--link-hover-color); +} + +.border-secondary { + border-color: var(--border-color); +} + +/* Border utilities */ +.border { + border: 1px solid var(--border-color); +} + +.border-bottom { + border-bottom: 1px solid var(--border-color); +} + +header.border-bottom { + border-bottom: 4px double var(--text-secondary); +} + +.rounded { + border-radius: 0.375rem; +} + +/* Shadow utilities */ +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem var(--shadow-color); +} + +.shadow { + box-shadow: 0 0.5rem 1rem var(--shadow-color); +} + +/* Positioning utilities */ +.position-relative { position: relative; } +.position-static { position: static; } + +/* Sizing utilities */ +.w-100 { width: 100%; } + +/* Display utilities */ +.d-none { display: none; } +.d-inline { display: inline; } +.d-inline-block { display: inline-block; } +.d-block { display: block; } +.d-flex { display: flex; } + +@media (min-width: 768px) { + .d-md-none { display: none; } + .d-md-inline { display: inline; } + .d-md-block { display: block; } +} + +@media (min-width: 992px) { + .d-lg-none { display: none; } + .d-lg-inline { display: inline; } + .d-lg-inline-block { display: inline-block; } + .d-lg-block { display: block; } + .d-lg-flex { display: flex; } +} + +/* Flexbox utilities */ +.flex-column { flex-direction: column; } +.flex-nowrap { flex-wrap: nowrap; } +.flex-grow-1 { flex-grow: 1; } +.justify-content-between { justify-content: space-between; } +.justify-content-end { justify-content: flex-end; } +.justify-content-evenly { justify-content: space-evenly; } +.align-items-center { align-items: center; } + +@media (min-width: 768px) { + .flex-md-row { flex-direction: row; } +} + +/* Gap utilities */ +.gap-2 { gap: 0.5rem; } +.gap-3 { gap: 1rem; } + +@media (min-width: 576px) { + .gap-sm-5 { gap: 3rem; } +} + +/* Spacing utilities */ +.m-0 { margin: 0; } +.mt-1 { margin-top: 0.25rem; } +.mt-3 { margin-top: 1rem; } +.mt-4 { margin-top: 1.5rem; } +.mb-0 { margin-bottom: 0; } +.mb-1 { margin-bottom: 0.25rem; } +.mb-3 { margin-bottom: 1rem; } +.mb-auto { margin-bottom: auto; } +.my-2 { margin-top: 0.5rem; margin-bottom: 0.5rem; } +.my-4 { margin-top: 1.5rem; margin-bottom: 1.5rem; } +.mx-2 { margin-left: 0.5rem; margin-right: 0.5rem; } +.mx-3 { margin-left: 1rem; margin-right: 1rem; } +.mx-auto { margin-left: auto; margin-right: auto; } + +.p-4 { padding: 1.5rem; } +.px-0 { padding-left: 0; padding-right: 0; } +.py-0 { padding-top: 0; padding-bottom: 0; } +.py-3 { padding-top: 1rem; padding-bottom: 1rem; } +.pt-3 { padding-top: 1rem; } +.pb-0 { padding-bottom: 0; } +.ps-3 { padding-left: 1rem; } diff --git a/dist/index.html b/dist/index.html index 14b6c4a..5e8c65c 100644 --- a/dist/index.html +++ b/dist/index.html @@ -102,12 +102,7 @@ -
+

Biography - Yan Lin

diff --git a/templates/index.html b/templates/index.html index 50dbd07..a433518 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,12 +1,7 @@ {% extends 'base.html' %} {% block title %}Yan Lin's Homepage{% endblock %} {% block navigation %} {% include 'partials/navigation.html' %} {% endblock %} {% block content %} -

+

Biography - Yan Lin

From e19f889ee6f18b2a21a7abdc9eb8a7177cbe7354 Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Mon, 2 Feb 2026 17:03:57 +0100 Subject: [PATCH 06/10] minor adjust of list item numbers --- dist/index.html | 60 +++++++++++++++++++++++++++++++++++++++++++- templates/index.html | 14 +++++------ 2 files changed, 66 insertions(+), 8 deletions(-) diff --git a/dist/index.html b/dist/index.html index 5e8c65c..f8004a3 100644 --- a/dist/index.html +++ b/dist/index.html @@ -102,7 +102,7 @@ -

+

Biography - Yan Lin

@@ -219,6 +219,23 @@

TrajCogn: Leveraging LLMs for Cognizing Movement Patterns and Travel Purposes from Trajectories

Zeyu Zhou*, Yan Lin*, Haomin Wen, Shengnan Guo, Jilin Hu, Youfang Lin, Huaiyu Wan

+
+
+

+ IEEE TKDE | 2025 +

+
+ + Paper + + Preprint + + Code + +
+
+
UniTE: A Survey and Unified Pipeline for Pre-training Spatiotemporal Trajectory Embeddings
+

Yan Lin, Zeyu Zhou, Yicheng Liu, Haochen Lv, Haomin Wen, Tianyi Li, Yushuai Li, Christian S. Jensen, Shengnan Guo, Youfang Lin, Huaiyu Wan


@@ -305,6 +322,23 @@
STCDM: Spatio-Temporal Contrastive Diffusion Model for Check-In Sequence Generation

Letian Gong, Shengnan Guo, Yan Lin, Yichen Liu, Erwen Zheng, Yiwei Shuang, Youfang Lin, Jilin Hu, Huaiyu Wan

+
+
+

+ IEEE TKDE | 2024 +

+
+ + Paper + + Preprint + + Code + +
+
+
Micro-Macro Spatial-Temporal Graph-based Encoder-Decoder for Map-Constrained Trajectory Recovery
+

Tonglong Wei, Youfang Lin, Yan Lin, Shengnan Guo, Lan Zhang, Huaiyu Wan

@@ -497,6 +531,30 @@
PLM4Traj: Leveraging Pre-trained Language Models for Cognizing Movement Patterns and Travel Purposes from Trajectories
+
+
+

+ Paper Oral | SIGMOD 2024 +

+
+ + Slides + +
+
+
Origin-Destination Travel Time Oracle for Map-based Services
+
+
+

+ Tutorial | SpatialDI 2024 +

+
+ + Slides + +
+
+
Self-supervised Learning of Spatial-temporal Trajectories
diff --git a/templates/index.html b/templates/index.html index a433518..e24acf1 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,7 +1,7 @@ {% extends 'base.html' %} {% block title %}Yan Lin's Homepage{% endblock %} {% block navigation %} {% include 'partials/navigation.html' %} {% endblock %} {% block content %} -
+

Biography - Yan Lin

@@ -28,13 +28,13 @@ block content %}

- {% for pub in data.primaryPublications[:6] %} {% with + {% for pub in data.primaryPublications[:7] %} {% with type='primary' %} {% include 'partials/publication.html' %} {% endwith %} {% endfor %}

- {% for pub in data.secondaryPublications[:6] %} {% with + {% for pub in data.secondaryPublications[:7] %} {% with type='secondary' %} {% include 'partials/publication.html' %} {% endwith %} {% endfor %}
@@ -58,12 +58,12 @@ block content %}
- {% for project in data.primaryProjects[:3] %} {% with type='primary' + {% for project in data.primaryProjects[:5] %} {% with type='primary' %} {% include 'partials/project.html' %} {% endwith %} {% endfor %}

- {% for project in data.secondaryProjects[:3] %} {% with + {% for project in data.secondaryProjects[:5] %} {% with type='secondary' %} {% include 'partials/project.html' %} {% endwith %} {% endfor %}
@@ -81,7 +81,7 @@ block content %}
- {% for teaching in data.teaching[:3] %} {% include + {% for teaching in data.teaching[:5] %} {% include 'partials/teaching.html' %} {% endfor %}
@@ -97,7 +97,7 @@ block content %}
- {% for presentation in data.presentations[:3] %} {% include + {% for presentation in data.presentations[:5] %} {% include 'partials/presentation.html' %} {% endfor %}
From 3a2ede48fb8140995d12a7ab6896e4ac375d34bd Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Wed, 4 Feb 2026 07:44:58 +0100 Subject: [PATCH 07/10] simplify responsive design --- dist/css/index.css | 31 +------------------------------ 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/dist/css/index.css b/dist/css/index.css index b9fd109..1ee2676 100644 --- a/dist/css/index.css +++ b/dist/css/index.css @@ -123,6 +123,7 @@ h5 { .container { --bs-gutter-x: 1.5rem; width: 100%; + max-width: 1200px; padding-right: calc(var(--bs-gutter-x) * 0.5); padding-left: calc(var(--bs-gutter-x) * 0.5); margin-right: auto; @@ -130,36 +131,6 @@ h5 { flex: 1 0 auto; } -@media (min-width: 576px) { - .container { - max-width: 540px; - } -} - -@media (min-width: 768px) { - .container { - max-width: 720px; - } -} - -@media (min-width: 992px) { - .container { - max-width: 960px; - } -} - -@media (min-width: 1200px) { - .container { - max-width: 1140px; - } -} - -@media (min-width: 1400px) { - .container { - max-width: 1320px; - } -} - .row { --bs-gutter-x: 1.5rem; --bs-gutter-y: 0; From 1683c40dd6524d076a09070e70d7c0b526c26176 Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Wed, 4 Feb 2026 07:51:21 +0100 Subject: [PATCH 08/10] futher adjustment of responsive design --- dist/css/index.css | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dist/css/index.css b/dist/css/index.css index 1ee2676..e82321b 100644 --- a/dist/css/index.css +++ b/dist/css/index.css @@ -123,7 +123,7 @@ h5 { .container { --bs-gutter-x: 1.5rem; width: 100%; - max-width: 1200px; + max-width: 1320px; padding-right: calc(var(--bs-gutter-x) * 0.5); padding-left: calc(var(--bs-gutter-x) * 0.5); margin-right: auto; @@ -131,6 +131,13 @@ h5 { flex: 1 0 auto; } +@media (min-width: 800px) { + .container { + padding-right: 4rem; + padding-left: 4rem; + } +} + .row { --bs-gutter-x: 1.5rem; --bs-gutter-y: 0; From 09ea2ac54004f7ab23c1a7b218476b123c2cea61 Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Mon, 9 Feb 2026 13:20:47 +0100 Subject: [PATCH 09/10] optimize favicon --- dist/apple-touch-icon.png | Bin 2669 -> 3377 bytes dist/favicon-96x96.png | Bin 1225 -> 1544 bytes dist/favicon.ico | Bin 15086 -> 15086 bytes dist/favicon.svg | 54 +++++++++++++++++++++++++++++- dist/index.html | 2 ++ dist/presentations/index.html | 2 ++ dist/projects/index.html | 2 ++ dist/publications/index.html | 2 ++ dist/site.webmanifest | 14 +++++++- dist/teaching/index.html | 2 ++ dist/web-app-manifest-192x192.png | Bin 3006 -> 3589 bytes dist/web-app-manifest-512x512.png | Bin 12999 -> 9871 bytes templates/base.html | 2 ++ 13 files changed, 78 insertions(+), 2 deletions(-) diff --git a/dist/apple-touch-icon.png b/dist/apple-touch-icon.png index 25fa3c6964f3255e61b74763e936916aa4fe88f1..cf11bb0066a07a512be7c5488f9fa51b2d81bd9a 100644 GIT binary patch literal 3377 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 literal 2669 zcmeAS@N?(olHy`uVBq!ia0y~yVAuk}9Bd2>47O+4j2IXg7>k44ofy`glX=O&z~GV^ z;hE;^%b>-;z`()4*q+J20#d@jz#zo{0?Z2-8JNK$j0_A5nBcNo7BC~&AcbL9r&TgA za9;OxaSW+od^@)~MDF$sD68F@zZWh`Klk_B z{Jivcw%=>+e}A23WNqxbYHhXahbCqx84s~V%tj9mu(C6lI0!stXb=-sKf;hYghY1HyeceA{yJ7MfhP9?Es=fXEx_tJ3 zoaMGRSI<`F=hqV}-EOa_lQg$5zVx=sWYwp}>#2-i;?uR2^w-?;(TZb#vFg>V6MLS% z_WZp|S${R>1^FpcT<`sE``2%y_2x0F>!OCV!V`t-pDka`m6_V^zlvwSLD}#3^;+ix z=WfV3cXm~s!$r#w$^`fPQ8>BS1xn|F;p=3e-@ zC3g2)^GowSZQ4EgTKPr`=>_-a*!ErdZ~R=#^Yv?ycoWn3bg5@Y3LAJYSk9dLc#CH7 z^^Sc%TDHyAkzSC?{dv{);{S!~&(6CYCNSSC=l-^-&v)I(c*dZ;VE*3fB{QYw-;Dpe z<$n5+rFZk|_x-)3&+=aEj%CvVEw4>Xzvf-6imy|Vdc2Bvx3H|#&FU{DhmuR#>@4ag zoHIG|v9Lk(f@J2}+FPc#_r8yKbbsI6^(zgdc{a~J${6P0E-NwR=E}&Pj2$l)3a3l| z%lf;S=NL-m1<$X6DVefu-u> zm)E){v!k9p_-O2F&bH&}+V9?sl6_kx@lgHdJB#Bd*02A2@w&-fM(?zq zOLMy_Ijs(ey?DO-a_j%Eeawb$Ez4HfJhQtjdzpiOsZaG}qxrfQc1D&QpOwAuwz%GMNPKEwYvOLbtuMe6(}%o<*mMclY*I-n^SL#gSK@J%ZV{ z^4Gc3)6b^1?=_3Qxh?A+i*{*%%0A{bjq?n5eSG`(bTBwI#dx_59?B zpfzLnxzIbQZmt*O^`VZExU8~9| z-7c-Ntx7DF|I4D4CgmG-{$_M9R}_)v{`GZK8NiIm;DmsX1$R6s?S+7?!MWMtE(2R zy7f!Qa_`;hioQ}|QSLUT7b}(pGQXLxd1FiWyV(ab&c8piQ}q|~dInhz-V6SMHZzv~ zo5i=Py*s_^;M*|9O*M%tFEIEP7M?%P{;%5P#x$e%-BW!Iy{Jsxb+Y8l)e;30hwN9~ z)@%QrxhsDAe}}bS`tv)S&ZWx|`xY`UWU4AOJbQNYYmSDx1s|dgXBfmDZwz3x?S4>M zaM8Uk_TSoteG_LKKHM06SnkA!cZcj0k5swy?>Y5~YdPn< zH~s3LqkBD8M!aaKEBaKR+E~|Y|JUx@-`2X~qSr+q3&% z*0r53;p|blK?NHxFv^})y7`Dz=%N_zKjpPK z%Wviqg)a{7d$aEM@CzS5yMgi2tOG$x4fCq2Ki^4|{p;=^vb|Mxf^^%F0tScU25J+} z?zMjGXw>;b-dhUN;VpmTQ<56*pD#CnyyN&(%Kp?{#yKLYHUrv zd5w$!>z6mt?Cg(p`sOlkjLa4cbg;KFobmbMjv4XYTOHIonXCkkzY?pgymn*3v_n>1 zd<+?`hYjXzXJ(jHZui3PA|u1v42ibSWeg6V&#~Xtv|?Bw%6qur9v?%-y`KxLUD+A7 zEJ~C(cbk#nthIc}@)ryZVJ19>E3Fw8R6cKhCnC#mp{p&?BA=bX+?qAnWn zJb%m3@N6#suHX^|2W_dghkIlhF6{a2Sl-3AM5FI`K_cIpdm&OccRlZzxay~C&Aj*Q z3wjsv{D1P@{GFNDLCy@BB8lUjOmk!yF3h>)pnr^yAtRYPuwgPY!>nMb7e{X}GUVnc zaupOYI23y^@0GA-SkSBM!sy4xkl~lPKs=e9Vavu=jRPkc8P00*eo1=6&|tPrfYrj1 zVS(k+#<(6?h6~5U7BQ%^GngzlxzN3lnc>zACy@tF7#f~UVXHDMV{nj;?!aQX=hjkv zKi-+&ioT@m%;dcP^RCgQn&UHgENa&oeJW4g>e=b=Jm~jAB{!K1T8|9F<}q75nJ|6j zhN!q@e%eeI{EqAU+cZoY cYFhqtI~-JAcTL#S5Y*K3boFyt=akR{0D(TfK>z>% diff --git a/dist/favicon-96x96.png b/dist/favicon-96x96.png index ec274bff7c8824dd6d8c756e9ba8ecea6f20d35d..9c9160e63c9339594ab9e29106ae1e4117962eda 100644 GIT binary patch delta 1537 zcmX@f*}*eGvYwfNf#IrKI~M~3gF>=LkS_y6l^O#>Lkk1LF9rsNh8GMBr3MTPuM!v- ztY$DUh!@P+6==i2z?2o>6XN>+|Np=L{_VQ(VAjryvv*yZyXW%5S08Ubdp~FQr2|(U zUAXsZ)~<`|Pu%|b`%lA)V*=5Wg=42I*mtFG;~Bx|$rCo8?ca39xxRMQ$FD!7lV*s< zO|4vf=+EDO$&+`8#7JMLjq)prP{QZ|p4_>Ke&Jl{4T(k7>{JmGs-hH|D_$~4HX;O*Px1YUt`N3=Tthpkw zQ`Q{2)w1fiS;>+oZ$E$e{>!&zUHjVllfVA_jqcmpyy|%JlpU`=e6^}rCLA+m(f+Hu zFFbIrTlL}VkMs9lDrd~m%$axX@tbGwzL=LS)ybQG`}zBzj*Z`b{{H*-U;4CNGRZRz zTz=HL`b5u$(+l@qnZNh)@4tWJCvF#sn<}3=>*)2TS028uS$gE{=kE^HD;#T9e);js zuXX+P$8YO3vgeg8JZN9N;@#)(JI~*jOqjm$)SW#SA8O~$zy0jpwC(4OiWWV8_r;=Y zsciDhLsuUc&D)0}no4mXk^dLo4xnzk6-?6 z>%+P?Z#a3oZOsX%+EpEEPs*mu+&9Z!{aeeXPg1P(t{r{gi zW4BoRG>L?1;tA8%9J{&rz*YT%g?C?kxccZ#O#jw^whhy_Uua)*LM3C)zRQnflV^A~ zt^M@v=Zp7Wt;&}*t~i!8bI+0k*TmwcX3yO7^~dkP_6=h3Qef#;1C+`%}W+|r4is;$= z{pWA*=CuM*lQ*Bfv*q+%1_lO06ILY#1_s6?Z+Dloxfd3@GB7Z37I;J!GcZhJ0Aa@Y zk0(B0U|^6eag8Vm&QB{TPb^AhC@(M9%goCzPEIUH)ypqRpZ(58ih+UYnWu|mNJjm= zw==HC3p8tD-j#SuiOY|*0`}@QBwYm z4drkC_8Y0ZxOelz1bO4ifaf;z&g{Ma=FCYIYX&DUsFFN%NO{677qj2Fi#N#1@m|nl zvlcYmSa?wI)^YC$*;#M(Bd!Ei2eEk{ zP6b6wZM0e&cbG3Cx+iH%o^6i9^Z8p0C&_NeH0H{>DOP`@>)VW+;?2xFw+jQxcW~=! zxC9>HYlw;2Su9?qaQj`6T!U@()*BOQpT0QmPFN5{0F;}?@_7_QB-|D9zd?=D^RNJYNk;S{kem(#bHZB1|FXE=9K z*V8KgIClZ#{QO(>T(LcmSwF-CMKj#cW7cPg31s>`d)=~+%rU#)@i1tZ=Y3+nv#Okh zDUaE{;UOOI}xdU*+%r{`zoHfU6M!Z%p6aWOVBUO{ Qfq{X+)78&qol`;+0C&k9iU0rr literal 1225 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 Ir?h|q01nl4Jpcdz literal 15086 zcmZQzU}RusFfaho3Jfb$85qnM7#I{3pnL%ahI^_E3<3fWeg+EzLz@``g9ZZwg8>5r zLjnUtoPiAR|NnoP|NsAI|NsAg+yDRnZ~XuN|I>fk1CSjcyFhk=?3N+b>Hq)#m-_$z z|Lp(&|No)Aa|zl2as$XMQpEV<|NsB_|NsC0NzhdKD*(AEAD~!V#7NNdTWdTyg~5PqN!V&cS6DNE{@O3xniI z#RS}s%PPF$_}qX`BR+k&ex1M`dV zX{VYTJ~!aA1fM>T+^GBUg&sl<6jrz}LKP+pmmZk-X!v7>8M+88tZ>o)|NTSP0_Wq> z0~4o5_`~eNN5dVA#=xfsBsc1Qv;afnJ~+PKmHV$BT81}_VfLfb|Ner8I1oNSmq+K*%Khl} zAoD@4L*}EiLGmz+E{Dz^bw4bmP-*mVg7Gi!nFm$~<71=23ZMiwd1NtKgg>(R=xnI7 z{{Q~*6=(jKo2>y;hEom9+<|gG$bm37V533uAdF28S&U5g;~fJ+HXof0auW=r%OUfL zQ3Fy>hWkNo2aUnOtU#f!>|200&XE;^?8k*)-a8Lgic20QPKNtIZU>Elg3U)KVCG_@ zXQs%aD4&(8K+vz)%t00-!~Gz)gT|my+ydkL`11ZgE(}wHOyg1u5(lXR(fIK1pWi^r zNWmbtgXREGD@syK7&x^cH-qPfhw}UpbPfqLUk#cQ8@SLU&1R5W;q!M;KY-?~Ni${O zRHMwFg4_?nLwWuhKPb*fM|IJh7TZ` zpMl{4h-PPCH~^xV85kNsG$VoraYr#C1kl3=7H+U`goP_CoMGV(TBoJJz`)=@;ySJW z|Nra!|Np=L|NsA2sI)E%lx{#~fy~rF_zacx|Nnos|Ns9_q4C-(P@V(X!G>%*)b4k* z&Ok`!gY1I40qSogX}U0{fWiP8-=J`zi={}Gfb4{&H6&qF=GPA||D$766%Zb}8f<)s zN)!^5CP8TvMG%>T+>VE_k>z1*m>fPDrWT0?*$v7cNJ6MgZ04b=fbg)XLl=XnL?Q9o z4N{4228a(5N5>#>LKs~SF??)hV$+9B9l97ceT2l&%>ePS=>dsj!`Rf4B1Wv4*wlf< zNU;l>T96s&m{@fnec05JA_g)89fQX9(ak_t1LLEsBb5&`2c1SY2VEYY6q;}S=ghp8imhUrD7Vfv88K_D*_WIqf;`(vPV0ZN+~ zd6Nu>fy@Az1u_#H-!QvC^aln8{sRmQ%nb|-j35jWqa_B}0m2|VL3V@2DFi_K&WISN zfR1}D`~Uy{QzF6vqz0rGJWd7Gi+d3rZUaGjKyw)&vv8}zF9XsGat~Y;a#;lvL>2?F zKfQVglS0u85(LS^Fo+MrFg}b%(hrhG!7w!-8YTf^!!S$?7Y$PfqG4)4Y#4@#;i6&c zKr~DZhz-LqF \ No newline at end of file + + + + + + YL + diff --git a/dist/index.html b/dist/index.html index f8004a3..ec8ab6a 100644 --- a/dist/index.html +++ b/dist/index.html @@ -13,6 +13,8 @@ + + diff --git a/dist/presentations/index.html b/dist/presentations/index.html index 1fc4fac..601a765 100644 --- a/dist/presentations/index.html +++ b/dist/presentations/index.html @@ -13,6 +13,8 @@ + + diff --git a/dist/projects/index.html b/dist/projects/index.html index dc0cf68..5bf298e 100644 --- a/dist/projects/index.html +++ b/dist/projects/index.html @@ -13,6 +13,8 @@ + + diff --git a/dist/publications/index.html b/dist/publications/index.html index 1b046c5..ed0f8af 100644 --- a/dist/publications/index.html +++ b/dist/publications/index.html @@ -13,6 +13,8 @@ + + diff --git a/dist/site.webmanifest b/dist/site.webmanifest index f5a3f75..347dc07 100644 --- a/dist/site.webmanifest +++ b/dist/site.webmanifest @@ -13,9 +13,21 @@ "sizes": "512x512", "type": "image/png", "purpose": "maskable" + }, + { + "src": "/web-app-manifest-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/web-app-manifest-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "any" } ], "theme_color": "#ffffff", "background_color": "#ffffff", "display": "standalone" -} \ No newline at end of file +} diff --git a/dist/teaching/index.html b/dist/teaching/index.html index 3f9eccf..7945041 100644 --- a/dist/teaching/index.html +++ b/dist/teaching/index.html @@ -13,6 +13,8 @@ + + diff --git a/dist/web-app-manifest-192x192.png b/dist/web-app-manifest-192x192.png index 272607f032e718ee1e1723cb65f5395af92a7304..2d4974237d5f0bf1abbfc964cb63a859c209b863 100644 GIT binary patch literal 3589 zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Bd2>3_*8t*cliY6p}rHd>I(3)EF2VS{N99 zF)%PRykKA`HDF+PmB7GYHG_dcykO3*KpO@I2DT(`cNYdQ`02d6o`HdZv%n*=n1Nv$ z0|+zDe?0L40|SF(iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$QVa~dA)YRd zAr-gY-t{b&J}$}jVEabF7={TEoDGk(nihz8FVXFuGRG@us{90Ry_F$+JD<&R=KCqQ z^VyVB{3jHruAc18xAK$XRExe-W~rSbs)g!eO$yiE$tavk%QW2n@@3-w^MOhi9th|g zd@enI-AQw)LyG47+xiVBe0dlmdl?m08#1JrvNfzZ#xUWk1j8mNW{0q3h7(y-mW*=v z-f*@|eD1m{|GL|n>RA4YpRQhg*>(5hL)rX41bODvy!B%2En^SbwS8~%{rAomFUoWO zoL*qdQ2+Cd;lCf-^&bd3-JTJ<^uuR)k&mb4@7sJY)>!)C_x^v}_5c4!{;{iFAIs5r z|IZiYKQFFr75*Q$&iun|`@hWR%T`DAKi#-4BtkFk#o2j72w*V*!oL1ppZA2p@y z?rZs4mf6QF*EXCcaY(4GoTKJYp1;S;LtR2c-XBf9LV1 zx>P!T?~U@Oyfe?`3BBYnOYlHDrhF%tIko-;ULDGStm?IPm;(h0Ok?QwpBWe!eO5{|gV--y03) zwq5yg@uBd6V|Bc@r~cYG|M5pR&ZUQ!?K8J$U~FVBwrp{}WxssQLR$tW4xRH)@9kJo zTy>^sZ|ByxuXfIVT>rW{W83aqahro2QWRRA?wqsDF!#x+tEV58u$}aDHkYjU z`o~^|=fT68xZ4%miqP5MmJT+S@RC=nfyKj{hpS|;!;AV@tZbnuMw(j{+ zvA8Ad`IqI!udCT_th=IU61%~Bslj~z1S{d)KPF%NUS!Jfc%{a(JT4ry&ackExPx^ z7}^dw>WEwZUfumVJkq;Wr_E%lb1MU1UsQzc(@7m^yKnDKyAb+s3fJVB63>ncRk5jj zXAY3*PPP%f8pfAfsv?&^#sBN(-&@(PZTq@*d$`xbdp>L@GxksWc%p$pMVUF`$_}d# z&DP`6OM_!8*1wla*d2ARygzSu zPvhZ+i`RC7#JdEoKq0Jy4fm(BVlof_0>ro`tfhFcQZ^2 zdf414@~N|9+Q${gI~aP@m2aI|=)^H4i+9hR^?ScRkDB{#rutdEL+^zvEavb3(EGc@ z%uVKPfkwmcR+*A1(JT#Bo12$MzmFFRTxGg7mO-1fho|-9N1gQgQe!2ChI>UB?p`&U zBkSIu-*abuqWfjm4Ix~ucR1Fix10X?_9gZh%K{6r<1SXKmY?rs+IMr!0_FR)b^lXV z_uQJePx8Uioic5Q6m6R?W*=iw5PW<5QHk5-)(r=K<%w=xTz+5X^Victw`S=zu>WGJ zIB+vQTtb+EvG!@ee1>hOO5cRtkK=sh)jDVmAjombzk+V=TBf4Y&!af{!t*%mVu=!zcf&E_mIt@&hjD|SuZ z{=Gt5{$?GV(-+O)#At6f^L+N+`!n{XhAhCpL?QYvTEPYoa ztg}+&(ndxdzjT@ZwJ+cHa4|64(N8hFvVOVDuae!LuFbrcZ+0qbR)Xi!f^4PEY|nH5 zb{*ZpaOUab86HPv^xL@;vHNe+>bw4bDpL}3ZG=|JT-lC$r*|-LFz`Ps;;@Y2vt7rM zJI(K&Y?xinqoZ-Yr+@zc`o4P$@3Tm3gn?liuQ z+3Zd+FkGc zd1R){EWr0`W5@~1IKEJ?#N6i(j_9fTo1N~{Z=B$js3UmrE$6v^yUw0qU^xEt!i2?7 zFFdYW*jx7gox#!u^=Q%K`UjSVM9lC@E}5~G|880i!?RDyGfFB-S2P?b+u4`3mzBXH zYwN~skN*gDJigYRmy_$FE-BsMvP8by_}n@^Q6`P6Qa9Fr6+1eWZ}$3I3#`9aYc8G8 z_3iOu$$Nj2n39#1#yi1Cwls&w%62hx zLAh3MNzQ?b)vdGVzIz?I@O*jp3iG*Z88|s~#6REpaZbRE{Xx{G?N(P#GL$Sm)V(*3 zA*@`h?;Xqff;}H))9ZZ`OBjAN)#;qI+zraZ)0f6ET-&y~ug%x1^`#Hb(V9CO4PWH+ z@G&slnSWO4QGsR2>KOO67hj#_vaV$0Y3)zneCNkGg=6dsCiGiJ@rgPmtgmW$drHvE zyS=aO_7}5#kN56ZGqhvq^pKFZir^DvT5)A|#kSzLp$#%s|Lb>ul#Q03b>s&F!+|2h z_6g3}&sZCx7WYo=ecWp>$FpGySGij7iN1nw*Hz|mG%S7^pm-sp{6j`9zb^ZGChi}# zKT_=a8KUK-jtbZJZggQWm(^&1tTIzENpu7}Lya?tpYRl34m z>ZI4of@-5y!@Qbw9e-AaALm{L@YitusAb~swq#+RXMN_{hdc4hCP*JFQA_)iIU(r4 zhX9H1H-BBon8$sf!~N94?`P0Rb&8HUbz1Du`$2n^oSq6q3=CfT(7M$-W%CIr{{C|(d z^k2w~>13!en0e?$NA=Tyr6Q9q*40$ZUCY1snHP(KeE*IpzNg2^@0F@D3Gn>b@aEC0 z0C4l?OYvjt^E-tY85*iLFYeeGz!%D(^jA^m?8ZMYUBlHFHs8GWcl)mO%u7OM$n`F? zIM(}q&x=zm3T8LjZ{F$nRs^@274+(T+Jd;=yAy@}X@9W1HkIpA>pFpOEe7M6i8|*~AAWyX?Od|-$e9-# zzTG#K`0(&uiqyx21~rc!^{%{gZ7SF0nKQl>wiYdx>~@~@R?jMSW$m4Y`|bM{#J`>a zYQ!I(nlHbch1sr!sjC0+R4#^#k(K|SOnkvayUqn>pJnTR=B^9=A?<}3r$AjaPgg&e IbxsLQ0IdXo&;S4c literal 3006 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 diff --git a/dist/web-app-manifest-512x512.png b/dist/web-app-manifest-512x512.png index 89a95c144577b04953b9f341b0a619d19f25cad1..afffded93086b441982843fef39201a8d8ad9eb4 100644 GIT binary patch literal 9871 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 literal 12999 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 + + {% block extra_head %}{% endblock %} From 292e7354693eb844803ae5c72ccd9c282b0ac64d Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Wed, 18 Feb 2026 08:58:14 +0100 Subject: [PATCH 10/10] minor fix --- dist/.nojekyll | 0 dist/index.html | 604 -------------------------------- dist/presentations/index.html | 162 --------- dist/projects/index.html | 227 ------------ dist/publications/index.html | 642 ---------------------------------- dist/teaching/index.html | 95 ----- generate.py | 4 - 7 files changed, 1734 deletions(-) delete mode 100644 dist/.nojekyll delete mode 100644 dist/index.html delete mode 100644 dist/presentations/index.html delete mode 100644 dist/projects/index.html delete mode 100644 dist/publications/index.html delete mode 100644 dist/teaching/index.html diff --git a/dist/.nojekyll b/dist/.nojekyll deleted file mode 100644 index e69de29..0000000 diff --git a/dist/index.html b/dist/index.html deleted file mode 100644 index ec8ab6a..0000000 --- a/dist/index.html +++ /dev/null @@ -1,604 +0,0 @@ - - - - - - - Yan Lin's Homepage - - - - - - - - - - - - - - - - -
- -
- -
-
- - - - - - - -
-
- -
-
- - - - - - - -
-
- -
- - -
-
-

Biography - Yan Lin

-

- I am currently a postdoctoral researcher in the Department of - Computer Science at Aalborg University, Denmark. I received my PhD and - Bachelor's degrees from Beijing Jiaotong University, China. My - research interests include spatiotemporal data mining, - representation learning, and AI for science. -

-
-
- - - -
-
-

- Publications -

-
- - View All - -
-
-
-
-
-

- KDD | 2026 -

-
- -
-
-
RIPCN: A Road Impedance Principal Component Network for Probabilistic Traffic Flow Forecasting
-

Haochen Lv*, Yan Lin*, Shengnan Guo, Xiaowei Mao, Hong Nie, Letian Gong, Youfang Lin, Huaiyu Wan

-
-
-

- NeurIPS | 2025 -

-
- - Poster - -
-
-
TrajMamba: An Efficient and Semantic-rich Vehicle Trajectory Pre-training Model
-

Yichen Liu*, Yan Lin*, Shengnan Guo, Zeyu Zhou, Youfang Lin, Huaiyu Wan

-
-
-

- NeurIPS | 2025 -

-
- - Oral - - Poster - - Preprint - -
-
-
TransferTraj: A Vehicle Trajectory Learning Model for Region and Task Transferability
-

Tonglong Wei*, Yan Lin*, Zeyu Zhou, Haomin Wen, Jilin Hu, Shengnan Guo, Youfang Lin, Gao Cong, Huaiyu Wan

-
-
-

- NeurIPS | 2025 -

-
- - Poster - - Preprint - -
-
-
PLMTrajRec: A Scalable and Generalizable Trajectory Recovery Method with Pre-trained Language Models
-

Tonglong Wei*, Yan Lin*, Youfang Lin, Shengnan Guo, Jilin Hu, Haitao Yuan, Gao Cong, Huaiyu Wan

-
-
-

- IEEE TKDE | 2025 -

-
- - Paper - - Preprint - - Code - -
-
-
UVTM: Universal Vehicle Trajectory Modeling with ST Feature Domain Generation
-

Yan Lin, Jilin Hu, Shengnan Guo, Bin Yang, Christian S. Jensen, Youfang Lin, Huaiyu Wan

-
-
-

- IJCAI | 2025 -

-
- - Paper - - Preprint - - Code - -
-
-
TrajCogn: Leveraging LLMs for Cognizing Movement Patterns and Travel Purposes from Trajectories
-

Zeyu Zhou*, Yan Lin*, Haomin Wen, Shengnan Guo, Jilin Hu, Youfang Lin, Huaiyu Wan

-
-
-

- IEEE TKDE | 2025 -

-
- - Paper - - Preprint - - Code - -
-
-
UniTE: A Survey and Unified Pipeline for Pre-training Spatiotemporal Trajectory Embeddings
-

Yan Lin, Zeyu Zhou, Yicheng Liu, Haochen Lv, Haomin Wen, Tianyi Li, Yushuai Li, Christian S. Jensen, Shengnan Guo, Youfang Lin, Huaiyu Wan

-
-
-
-
-
-
-

- KDD | 2026 -

-
- - Preprint - -
-
-
Traj-MLLM: Can Multimodal Large Language Models Reform Trajectory Data Mining?
-

Shuo Liu, Di Yao, Yan Lin, Gao Cong, Jingping Bi

-
-
-

- AAAI | 2026 -

-
- -
-
-
SculptDrug: A Spatial Condition-Aware Bayesian Flow Model for Structure-based Drug Design
-

Qingsong Zhong, Haomin Yu, Yan Lin, Wangmeng Shen, Long Zeng, Jilin Hu

-
-
-

- AAAI | 2026 -

-
- -
-
-
Spatial-Temporal Feedback Diffusion Guidance for Controlled Traffic Imputation
-

Xiaowei Mao, Huihu Ding, Yan Lin, Tingrui Wu, Shengnan Guo, Dazhuo Qiu, Feiling Fang, Jilin Hu, Huaiyu Wan

-
-
-

- KDD | 2025 -

-
- - Paper - - Preprint - - Code - -
-
-
DUET: Dual Clustering Enhanced Multivariate Time Series Forecasting
-

Xiangfei Qiu, Xingjian Wu, Yan Lin, Chenjuan Guo, Jilin Hu, Bin Yang

-
-
-

- IEEE TKDE | 2024 -

-
- - Paper - - Preprint - - Code - -
-
-
Diff-RNTraj: A Structure-aware Diffusion Model for Road Network-constrained Trajectory Generation
-

Tonglong Wei, Youfang Lin, Shengnan Guo, Yan Lin, Yiheng Huang, Chenyang Xiang, Yuqing Bai, Menglu Ya, Huaiyu Wan

-
-
-

- IEEE TKDE | 2024 -

-
- - Paper - -
-
-
STCDM: Spatio-Temporal Contrastive Diffusion Model for Check-In Sequence Generation
-

Letian Gong, Shengnan Guo, Yan Lin, Yichen Liu, Erwen Zheng, Yiwei Shuang, Youfang Lin, Jilin Hu, Huaiyu Wan

-
-
-

- IEEE TKDE | 2024 -

-
- - Paper - - Preprint - - Code - -
-
-
Micro-Macro Spatial-Temporal Graph-based Encoder-Decoder for Map-Constrained Trajectory Recovery
-

Tonglong Wei, Youfang Lin, Yan Lin, Shengnan Guo, Lan Zhang, Huaiyu Wan

-
-
-
-
- * Equal Contribution -
-
- - - -
-
-

- Projects -

-
- - View All - -
-
-
-
-
-

- Fundamental Research Funds for the Central Universities of China -

-
- -
-
-
Research on Prediction of User Travel Destination and Travel Time Based on Trajectory Representation Learning
-

Applies representation learning to trajectory data to transform original features into high-level information, improving the performance of downstream tasks such as travel time and destination prediction.

-
-
-

- Personal Interest Project -

-
- - Home - - Install - -
-
-
Development of OverleafCopilot - Empowering Academic Writing in Overleaf with Large Language Models
-

This project aims to develop a Browser extension to seamlessly integrate Large Language Models (such as ChatGPT) into the popular online academic writing platform, Overleaf.

-
-
-

- Personal Interest Project -

-
- - Website - - Code - -
-
-
Development of PromptGenius - All-purpose prompts for LLMs
-

This project focuses on developing a website that offers a wide range of prompt categories, enhancing the versatility of LLMs for various tasks and improving their output quality.

-
-
-
-
-
-
-

- Villum Foundation -

-
- -
-
-
Research on Inverse Design of Materials Using Diffusion Probabilistic Models
-

This project focuses on developing diffusion probabilistic models to first understand the relationship between chemistry/structure and material properties, then enable the inverse design of new materials with specific properties. This project currently supports my postdoctoral research position.

-
-
-

- National Natural Science Foundation of China -

-
- -
-
-
Research on Pre-training Representation Learning Methods of Spatial-temporal Trajectory Data for Traffic Prediction
-

This project aims to propose pre-training representation learning methods for spatial-temporal trajectory data, modeling multiple features to improve traffic prediction tasks. It demonstrates how trajectory representation learning can enhance traffic data mining.

-
-
-

- National Natural Science Foundation of China -

-
- -
-
-
Research on Spatial-temporal Trajectory Generation and Representation Learning Methods for Sparsity Problems
-

This project explores how to generate high-quality spatial-temporal trajectory data and corresponding representations to address sparsity-related issues, thereby supporting a variety of downstream tasks.

-
-
-
-
- - - -
-
-

- Teaching -

-
- - View All - -
-
-
-
-

- Fall 2025 | Aalborg University -

-
- - Moodle - - Literature - -
-
-
AI Systems & Infrastructure
- -

This course introduces students to streamlined interaction with AI models and systems, as well as implementation and deployment of scalable, production-ready AI systems on real-world infrastructures.

- -
-
-
- - - -
-
-

- Presentations -

-
- - View All - -
-
-
-
-

- Oral Presentation | PNCS17 -

-
- - Slides - -
-
-
AMDEN: Amorphous Materials DEnoising Network
-
-
-

- Guest lecture | Aalborg University -

-
- - Slides - -
-
-
Self-supervised Learning of Trajectory Data
-
-
-

- Workshop presentation | KDD 2024 -

-
- - Slides - - Paper - -
-
-
PLM4Traj: Leveraging Pre-trained Language Models for Cognizing Movement Patterns and Travel Purposes from Trajectories
-
-
-

- Paper Oral | SIGMOD 2024 -

-
- - Slides - -
-
-
Origin-Destination Travel Time Oracle for Map-based Services
-
-
-

- Tutorial | SpatialDI 2024 -

-
- - Slides - -
-
-
Self-supervised Learning of Spatial-temporal Trajectories
-
-
-
- - - -
-

Services

-
-
    - -
  • IEEE, ACM member
  • - -
  • Secretary of IEEE (Denmark Section) Computer Society
  • - -
  • Reviewer for journals: TKDE, TKDD, TIST, TII, and TVT
  • - -
  • Member of program committees of conferences: KDD, ICLR, NeurIPS, AAAI, CVPR, ICCV, IJCAI, WWW, and WACV
  • - -
-
-
- - - - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/dist/presentations/index.html b/dist/presentations/index.html deleted file mode 100644 index 601a765..0000000 --- a/dist/presentations/index.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - Yan Lin's Presentations - - - - - - - - - - - - - - - - -
- -
- -
-
- - - - - - - -
-
- -
-
- - - -
-
- - -
- - -
-
- -
-
-

- Oral Presentation | PNCS17 -

-
- - Slides - -
-
-
AMDEN: Amorphous Materials DEnoising Network
-
- -
-
-

- Guest lecture | Aalborg University -

-
- - Slides - -
-
-
Self-supervised Learning of Trajectory Data
-
- -
-
-

- Workshop presentation | KDD 2024 -

-
- - Slides - - Paper - -
-
-
PLM4Traj: Leveraging Pre-trained Language Models for Cognizing Movement Patterns and Travel Purposes from Trajectories
-
- -
-
-

- Paper Oral | SIGMOD 2024 -

-
- - Slides - -
-
-
Origin-Destination Travel Time Oracle for Map-based Services
-
- -
-
-

- Tutorial | SpatialDI 2024 -

-
- - Slides - -
-
-
Self-supervised Learning of Spatial-temporal Trajectories
-
- -
-
-

- Paper Oral | AAAI 2021 -

-
- - Slides - -
-
-
Pre-training Context and Time Aware Location Embeddings from Spatial-Temporal Trajectories for User Next Location Prediction
-
- -
-
- -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/dist/projects/index.html b/dist/projects/index.html deleted file mode 100644 index 5bf298e..0000000 --- a/dist/projects/index.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - Yan Lin's Projects - - - - - - - - - - - - - - - - -
- -
- -
-
- - - - - - - -
-
- -
-
- - - -
-
- - - -
- - -
-
- - -
-
-

- Fundamental Research Funds for the Central Universities of China -

-
- -
-
-
Research on Prediction of User Travel Destination and Travel Time Based on Trajectory Representation Learning
-

Applies representation learning to trajectory data to transform original features into high-level information, improving the performance of downstream tasks such as travel time and destination prediction.

-
- - - -
-
-

- Personal Interest Project -

-
- - Home - - Install - -
-
-
Development of OverleafCopilot - Empowering Academic Writing in Overleaf with Large Language Models
-

This project aims to develop a Browser extension to seamlessly integrate Large Language Models (such as ChatGPT) into the popular online academic writing platform, Overleaf.

-
- - - -
-
-

- Personal Interest Project -

-
- - Website - - Code - -
-
-
Development of PromptGenius - All-purpose prompts for LLMs
-

This project focuses on developing a website that offers a wide range of prompt categories, enhancing the versatility of LLMs for various tasks and improving their output quality.

-
- - -
-
-
- - -
-
-

- Villum Foundation -

-
- -
-
-
Research on Inverse Design of Materials Using Diffusion Probabilistic Models
-

This project focuses on developing diffusion probabilistic models to first understand the relationship between chemistry/structure and material properties, then enable the inverse design of new materials with specific properties. This project currently supports my postdoctoral research position.

-
- - - -
-
-

- National Natural Science Foundation of China -

-
- -
-
-
Research on Pre-training Representation Learning Methods of Spatial-temporal Trajectory Data for Traffic Prediction
-

This project aims to propose pre-training representation learning methods for spatial-temporal trajectory data, modeling multiple features to improve traffic prediction tasks. It demonstrates how trajectory representation learning can enhance traffic data mining.

-
- - - -
-
-

- National Natural Science Foundation of China -

-
- -
-
-
Research on Spatial-temporal Trajectory Generation and Representation Learning Methods for Sparsity Problems
-

This project explores how to generate high-quality spatial-temporal trajectory data and corresponding representations to address sparsity-related issues, thereby supporting a variety of downstream tasks.

-
- - -
-
- -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/dist/publications/index.html b/dist/publications/index.html deleted file mode 100644 index ed0f8af..0000000 --- a/dist/publications/index.html +++ /dev/null @@ -1,642 +0,0 @@ - - - - - - - Yan Lin's Publications - - - - - - - - - - - - - - - - -
- -
- -
-
- - - - - - - -
-
- -
-
- - - -
-
- - - -
- - -
-
- - -
-
-

- KDD | 2026 -

-
- -
-
-
RIPCN: A Road Impedance Principal Component Network for Probabilistic Traffic Flow Forecasting
-

Haochen Lv*, Yan Lin*, Shengnan Guo, Xiaowei Mao, Hong Nie, Letian Gong, Youfang Lin, Huaiyu Wan

-
- - - -
-
-

- NeurIPS | 2025 -

-
- - Poster - -
-
-
TrajMamba: An Efficient and Semantic-rich Vehicle Trajectory Pre-training Model
-

Yichen Liu*, Yan Lin*, Shengnan Guo, Zeyu Zhou, Youfang Lin, Huaiyu Wan

-
- - - -
-
-

- NeurIPS | 2025 -

-
- - Oral - - Poster - - Preprint - -
-
-
TransferTraj: A Vehicle Trajectory Learning Model for Region and Task Transferability
-

Tonglong Wei*, Yan Lin*, Zeyu Zhou, Haomin Wen, Jilin Hu, Shengnan Guo, Youfang Lin, Gao Cong, Huaiyu Wan

-
- - - -
-
-

- NeurIPS | 2025 -

-
- - Poster - - Preprint - -
-
-
PLMTrajRec: A Scalable and Generalizable Trajectory Recovery Method with Pre-trained Language Models
-

Tonglong Wei*, Yan Lin*, Youfang Lin, Shengnan Guo, Jilin Hu, Haitao Yuan, Gao Cong, Huaiyu Wan

-
- - - -
-
-

- IEEE TKDE | 2025 -

-
- - Paper - - Preprint - - Code - -
-
-
UVTM: Universal Vehicle Trajectory Modeling with ST Feature Domain Generation
-

Yan Lin, Jilin Hu, Shengnan Guo, Bin Yang, Christian S. Jensen, Youfang Lin, Huaiyu Wan

-
- - - -
-
-

- IJCAI | 2025 -

-
- - Paper - - Preprint - - Code - -
-
-
TrajCogn: Leveraging LLMs for Cognizing Movement Patterns and Travel Purposes from Trajectories
-

Zeyu Zhou*, Yan Lin*, Haomin Wen, Shengnan Guo, Jilin Hu, Youfang Lin, Huaiyu Wan

-
- - - -
-
-

- IEEE TKDE | 2025 -

-
- - Paper - - Preprint - - Code - -
-
-
UniTE: A Survey and Unified Pipeline for Pre-training Spatiotemporal Trajectory Embeddings
-

Yan Lin, Zeyu Zhou, Yicheng Liu, Haochen Lv, Haomin Wen, Tianyi Li, Yushuai Li, Christian S. Jensen, Shengnan Guo, Youfang Lin, Huaiyu Wan

-
- - - -
-
-

- WWW | 2025 -

-
- - Paper - - Code - -
-
-
Path-LLM: A Multi-Modal Path Representation Learning by Aligning and Fusing with Large Language Models
-

Yongfu Wei*, Yan Lin*, Hongfan Gao, Ronghui Xu, Sean Bin Yang, Jilin Hu

-
- - - -
-
-

- AAAI | 2025 -

-
- - Paper - - Preprint - -
-
-
DutyTTE: Deciphering Uncertainty in Origin-Destination Travel Time Estimation
-

Xiaowei Mao*, Yan Lin*, Shengnan Guo, Yubin Chen, Xingyu Xian, Haomin Wen, Qisen Xu, Youfang Lin, Huaiyu Wan

-
- - - -
-
-

- NeurIPS | 2024 -

-
- - Paper - - Poster - -
-
-
Mobility-LLM: Learning Visiting Intentions and Travel Preference from Human Mobility Data with Large Language Models
-

Letian Gong*, Yan Lin*, Xinyue Zhang, Yiwen Lu, Xuedi Han, Yichen Liu, Shengnan Guo, Youfang Lin, Huaiyu Wan

-
- - - -
-
-

- SIGMOD | 2024 -

-
- - Paper - - Preprint - - Code - -
-
-
Origin-Destination Travel Time Oracle for Map-based Services
-

Yan Lin, Huaiyu Wan, Jilin Hu, Shengnan Guo, Bin Yang, Christian S. Jensen, Youfang Lin

-
- - - -
-
-

- IEEE TKDE | 2023 -

-
- - Paper - - Preprint - - Code - -
-
-
Pre-training General Trajectory Embeddings with Maximum Multi-view Entropy Coding
-

Yan Lin, Huaiyu Wan, Shengnan Guo, Jilin Hu, Christian S. Jensen, Youfang Lin

-
- - - -
-
-

- IEEE TKDE | 2022 -

-
- - Paper - - Code - -
-
-
Pre-training Time-Aware Location Embeddings from Spatial-Temporal Trajectories
-

Huaiyu Wan, Yan Lin, Shengnan Guo, Youfang Lin

-
- - - -
-
-

- AAAI | 2021 -

-
- - Paper - - Code - -
-
-
Pre-training Context and Time Aware Location Embeddings from Spatial-Temporal Trajectories for User Next Location Prediction
-

Yan Lin, Huaiyu Wan, Shengnan Guo, Youfang Lin

-
- - -
-
-
- - -
-
-

- KDD | 2026 -

-
- - Preprint - -
-
-
Traj-MLLM: Can Multimodal Large Language Models Reform Trajectory Data Mining?
-

Shuo Liu, Di Yao, Yan Lin, Gao Cong, Jingping Bi

-
- - - -
-
-

- AAAI | 2026 -

-
- -
-
-
SculptDrug: A Spatial Condition-Aware Bayesian Flow Model for Structure-based Drug Design
-

Qingsong Zhong, Haomin Yu, Yan Lin, Wangmeng Shen, Long Zeng, Jilin Hu

-
- - - -
-
-

- AAAI | 2026 -

-
- -
-
-
Spatial-Temporal Feedback Diffusion Guidance for Controlled Traffic Imputation
-

Xiaowei Mao, Huihu Ding, Yan Lin, Tingrui Wu, Shengnan Guo, Dazhuo Qiu, Feiling Fang, Jilin Hu, Huaiyu Wan

-
- - - -
-
-

- KDD | 2025 -

-
- - Paper - - Preprint - - Code - -
-
-
DUET: Dual Clustering Enhanced Multivariate Time Series Forecasting
-

Xiangfei Qiu, Xingjian Wu, Yan Lin, Chenjuan Guo, Jilin Hu, Bin Yang

-
- - - -
-
-

- IEEE TKDE | 2024 -

-
- - Paper - - Preprint - - Code - -
-
-
Diff-RNTraj: A Structure-aware Diffusion Model for Road Network-constrained Trajectory Generation
-

Tonglong Wei, Youfang Lin, Shengnan Guo, Yan Lin, Yiheng Huang, Chenyang Xiang, Yuqing Bai, Menglu Ya, Huaiyu Wan

-
- - - -
-
-

- IEEE TKDE | 2024 -

-
- - Paper - -
-
-
STCDM: Spatio-Temporal Contrastive Diffusion Model for Check-In Sequence Generation
-

Letian Gong, Shengnan Guo, Yan Lin, Yichen Liu, Erwen Zheng, Yiwei Shuang, Youfang Lin, Jilin Hu, Huaiyu Wan

-
- - - -
-
-

- IEEE TKDE | 2024 -

-
- - Paper - - Preprint - - Code - -
-
-
Micro-Macro Spatial-Temporal Graph-based Encoder-Decoder for Map-Constrained Trajectory Recovery
-

Tonglong Wei, Youfang Lin, Yan Lin, Shengnan Guo, Lan Zhang, Huaiyu Wan

-
- - - -
-
-

- KBS | 2024 -

-
- - Paper - - Code - -
-
-
Inductive and Adaptive Graph Convolution Networks Equipped with Constraint Task for Spatial-Temporal Traffic Data Kriging
-

Tonglong Wei, Youfang Lin, Shengnan Guo, Yan Lin, Yiji Zhao, Xiyuan Jin, Zhihao Wu, Huaiyu Wan

-
- - - -
-
-

- IEEE TKDE | 2024 -

-
- - Paper - - Preprint - -
-
-
Spatial-Temporal Cross-View Contrastive Pre-Training for Check-in Sequence Representation Learning
-

Letian Gong, Huaiyu Wan, Shengnan Guo, Li Xiucheng, Yan Lin, Erwen Zheng, Tianyi Wang, Zeyu Zhou, Youfang Lin

-
- - - -
-
-

- AAAI | 2023 -

-
- - Paper - - Code - -
-
-
Contrastive Pre-training with Adversarial Perturbations for Check-In Sequence Representation Learning
-

Letian Gong, Youfang Lin, Shengnan Guo, Yan Lin, Tianyi Wang, Erwen Zheng, Zeyu Zhou, Huaiyu Wan

-
- - - -
-
-

- ESWA | 2023 -

-
- - Paper - -
-
-
Adversarial Self-Attentive Time-Variant Neural Networks for Multi-Step Time Series Forecasting
-

Changxia Gao, Ning Zhang, Youru Li, Yan Lin, Huaiyu Wan

-
- - - -
-
-

- APIN | 2023 -

-
- - Paper - -
-
-
Multi-scale Adaptive Attention-based Time-Variant Neural Networks for Multi-step Time Series Forecasting
-

Changxia Gao, Ning Zhang, Youru Li, Yan Lin, Huaiyu Wan

-
- - - -
-
-

- NeurIPS | 2023 -

-
- - Paper - - Code - -
-
-
WITRAN: Water-wave Information Transmission and Recurrent Acceleration Network for Long-range Time Series Forecasting
-

Yuxin Jia, Youfang Lin, Xinyan Hao, Yan Lin, Shengnan Guo, Huaiyu Wan

-
- - -
- -
- * Equal Contribution -
-
- -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/dist/teaching/index.html b/dist/teaching/index.html deleted file mode 100644 index 7945041..0000000 --- a/dist/teaching/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - Yan Lin's Teaching - - - - - - - - - - - - - - - - -
- -
- -
-
- - - - - - - -
-
- -
-
- - - -
-
- - -
- - -
-
- -
-
-

- Fall 2025 | Aalborg University -

-
- - Moodle - - Literature - -
-
-
AI Systems & Infrastructure
- -

This course introduces students to streamlined interaction with AI models and systems, as well as implementation and deployment of scalable, production-ready AI systems on real-world infrastructures.

- -
- -
-
- -
- - - - - - - - - \ No newline at end of file diff --git a/generate.py b/generate.py index 1497a6d..8dbc8c9 100644 --- a/generate.py +++ b/generate.py @@ -17,10 +17,6 @@ if __name__ == '__main__': os.makedirs('dist/presentations', exist_ok=True) os.makedirs('dist/teaching', exist_ok=True) - # Create .nojekyll file to prevent GitHub Pages from using Jekyll - with open('dist/.nojekyll', 'w') as f: - pass - def render_template(template_name, output_path, **kwargs): template = env.get_template(template_name) html = template.render(year=current_year, **kwargs)