{"id":1019,"date":"2023-07-10T18:34:01","date_gmt":"2023-07-10T15:34:01","guid":{"rendered":"https:\/\/www.juustila.com\/antti\/?p=1019"},"modified":"2023-07-10T18:34:01","modified_gmt":"2023-07-10T15:34:01","slug":"swift-library-for-verifying-finnish-pids","status":"publish","type":"post","link":"https:\/\/www.juustila.com\/antti\/2023\/07\/10\/swift-library-for-verifying-finnish-pids\/","title":{"rendered":"Swift library for verifying Finnish PIDs"},"content":{"rendered":"\n<p>I created a Swift library for verifying Finnish Person Identification (PID) numbers (<em>henkil\u00f6tunnus<\/em> in Finnish), <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/anttijuu\/FinnishPIDVerifier\" target=\"_blank\">FinnishPIDVerifier<\/a>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Using these PIDs in apps should be used only if really, really needed. Use some other ways to identify users \/ customers \/ members of a club or anyone. An UUID or something.<\/p>\n<\/blockquote>\n\n\n\n<p>I&#8217;ve used the Finnish PID verification as a small programming task in several courses, mainly to check prerequisites in programming skills when students enter my courses. <\/p>\n\n\n\n<p>Anyhows, I just wanted to try out creating a reusable Swift library as a <a rel=\"noreferrer noopener\" href=\"https:\/\/www.swift.org\/package-manager\/\" target=\"_blank\">Swift package<\/a>. Another thing I\u00a0wanted to learn is to write documentation using <a rel=\"noreferrer noopener\" href=\"https:\/\/www.swift.org\/documentation\/docc\/\" target=\"_blank\">Swift DocC.<\/a> Third thing I wanted to experiment with this project was to add the library to <a rel=\"noreferrer noopener\" href=\"https:\/\/swiftpackageindex.com\/\" target=\"_blank\">Swift Package index<\/a>.<\/p>\n\n\n\n<p>The Swift Package Index is a place to find packages you may find useful and actually import into your own apps. Now you can find the FinnishPIDVerifier in the <a href=\"https:\/\/swiftpackageindex.com\/anttijuu\/FinnishPIDVerifier\" target=\"_blank\" rel=\"noreferrer noopener\">Swift Package Index too<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"907\" src=\"https:\/\/www.juustila.com\/antti\/wp-content\/uploads\/2023\/07\/Nayttokuva-2023-7-10-kello-18.30.25-1024x907.png\" alt=\"\" class=\"wp-image-1020\" srcset=\"https:\/\/www.juustila.com\/antti\/wp-content\/uploads\/2023\/07\/Nayttokuva-2023-7-10-kello-18.30.25-1024x907.png 1024w, https:\/\/www.juustila.com\/antti\/wp-content\/uploads\/2023\/07\/Nayttokuva-2023-7-10-kello-18.30.25-300x266.png 300w, https:\/\/www.juustila.com\/antti\/wp-content\/uploads\/2023\/07\/Nayttokuva-2023-7-10-kello-18.30.25-768x681.png 768w, https:\/\/www.juustila.com\/antti\/wp-content\/uploads\/2023\/07\/Nayttokuva-2023-7-10-kello-18.30.25-1536x1361.png 1536w, https:\/\/www.juustila.com\/antti\/wp-content\/uploads\/2023\/07\/Nayttokuva-2023-7-10-kello-18.30.25-1200x1063.png 1200w, https:\/\/www.juustila.com\/antti\/wp-content\/uploads\/2023\/07\/Nayttokuva-2023-7-10-kello-18.30.25.png 1756w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>I created a Swift library for verifying Finnish Person Identification (PID) numbers (henkil\u00f6tunnus in Finnish), FinnishPIDVerifier. Using these PIDs in apps should be used only if really, really needed. Use some other ways to identify users \/ customers \/ members of a club or anyone. An UUID or something. I&#8217;ve used the Finnish PID verification &hellip; <a href=\"https:\/\/www.juustila.com\/antti\/2023\/07\/10\/swift-library-for-verifying-finnish-pids\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Swift library for verifying Finnish PIDs&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[2],"tags":[120,70,46,54],"class_list":["post-1019","post","type-post","status-publish","format-standard","hentry","category-coding","tag-package","tag-programming","tag-swift","tag-swift-doc"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.juustila.com\/antti\/wp-json\/wp\/v2\/posts\/1019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.juustila.com\/antti\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.juustila.com\/antti\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.juustila.com\/antti\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.juustila.com\/antti\/wp-json\/wp\/v2\/comments?post=1019"}],"version-history":[{"count":1,"href":"https:\/\/www.juustila.com\/antti\/wp-json\/wp\/v2\/posts\/1019\/revisions"}],"predecessor-version":[{"id":1021,"href":"https:\/\/www.juustila.com\/antti\/wp-json\/wp\/v2\/posts\/1019\/revisions\/1021"}],"wp:attachment":[{"href":"https:\/\/www.juustila.com\/antti\/wp-json\/wp\/v2\/media?parent=1019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.juustila.com\/antti\/wp-json\/wp\/v2\/categories?post=1019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.juustila.com\/antti\/wp-json\/wp\/v2\/tags?post=1019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}