{"id":506,"date":"2017-04-23T10:28:08","date_gmt":"2017-04-23T10:28:08","guid":{"rendered":"http:\/\/www.rangakrish.com\/?p=506"},"modified":"2017-04-23T10:33:41","modified_gmt":"2017-04-23T10:33:41","slug":"accessing-azure-tables-in-lisp","status":"publish","type":"post","link":"https:\/\/www.rangakrish.com\/index.php\/2017\/04\/23\/accessing-azure-tables-in-lisp\/","title":{"rendered":"Accessing Azure Tables in Lisp"},"content":{"rendered":"<p>In the previous <a href=\"http:\/\/www.rangakrish.com\/index.php\/2017\/04\/08\/accessing-azure-blobs-in-lisp\/\" target=\"_blank\">post<\/a>, we saw how to use <a href=\"https:\/\/github.com\/RobBlackwell\/cl-azure\" target=\"_blank\">cl-azure<\/a>\u00a0to access Azure storage, in particular, <em><strong>BLOBs<\/strong><\/em>. Today we will experiment with <em><strong>Tables<\/strong><\/em>.<\/p>\n<p>The following operations are currently supported by the library:<\/p>\n<p style=\"padding-left: 30px;\">&#8211; Create a new table<\/p>\n<p style=\"padding-left: 30px;\">&#8211; List all the tables available<\/p>\n<p style=\"padding-left: 30px;\">&#8211; Add rows to a table<\/p>\n<p style=\"padding-left: 30px;\">&#8211; List the contents of a table<\/p>\n<p style=\"padding-left: 30px;\">&#8211; Delete a table<\/p>\n<p>The <em><strong>create-table<\/strong><\/em> function lets you create a table in your account. If you want to know what tables are available in the account, you can use the function <em><strong>query-tables<\/strong><\/em>.<\/p>\n<figure id=\"attachment_507\" aria-describedby=\"caption-attachment-507\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.1-1.png\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" data-attachment-id=\"507\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2017\/04\/23\/accessing-azure-tables-in-lisp\/fig-1-3\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.1-1.png\" data-orig-size=\"1070,523\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Create Table\" data-image-description=\"&lt;p&gt;Create Table&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Create Table&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.1-1-1024x501.png\" class=\"wp-image-507\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.1-1-1024x501.png?resize=650%2C318\" alt=\"Create Table\" width=\"650\" height=\"318\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.1-1.png?resize=1024%2C501&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.1-1.png?resize=300%2C147&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.1-1.png?resize=768%2C375&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.1-1.png?w=1070&amp;ssl=1 1070w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><figcaption id=\"caption-attachment-507\" class=\"wp-caption-text\"><strong>Create Table<\/strong><\/figcaption><\/figure>\n<p>There is a very useful application called <a href=\"http:\/\/storageexplorer.com\" target=\"_blank\">Storage Explorer<\/a>\u00a0that you can use to connect to your account and manage the different entities. Here is a screenshot of the app showing the tables in my account:<\/p>\n<figure id=\"attachment_508\" aria-describedby=\"caption-attachment-508\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.2-1.png\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"508\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2017\/04\/23\/accessing-azure-tables-in-lisp\/fig-2-3\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.2-1.png\" data-orig-size=\"1031,582\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Storage Explorer View\" data-image-description=\"&lt;p&gt;Storage Explorer View&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Storage Explorer View&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.2-1-1024x578.png\" class=\"wp-image-508\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.2-1-1024x578.png?resize=650%2C367\" alt=\"Storage Explorer View\" width=\"650\" height=\"367\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.2-1.png?resize=1024%2C578&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.2-1.png?resize=300%2C169&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.2-1.png?resize=768%2C434&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.2-1.png?resize=800%2C450&amp;ssl=1 800w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.2-1.png?resize=352%2C198&amp;ssl=1 352w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.2-1.png?w=1031&amp;ssl=1 1031w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><figcaption id=\"caption-attachment-508\" class=\"wp-caption-text\"><strong>Storage Explorer View<\/strong><\/figcaption><\/figure>\n<p>Let us add two rows to the newly created table. The function <em><strong>insert-entity<\/strong><\/em>\u00a0does this. Every table must have two mandatory columns called <em><strong>PartitionKey<\/strong><\/em> and <em><strong>RowKey<\/strong><\/em>. These are used as the primary keys. You can add other columns as needed. For this example, let us define additional columns <em><strong>Name<\/strong><\/em> and <em><strong>Age<\/strong><\/em>, and accordingly populate two entities in the table.<\/p>\n<figure id=\"attachment_509\" aria-describedby=\"caption-attachment-509\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.3.png\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"509\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2017\/04\/23\/accessing-azure-tables-in-lisp\/fig-3-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.3.png\" data-orig-size=\"1253,890\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Adding Rows\" data-image-description=\"&lt;p&gt;Adding Rows&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Adding Rows&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.3-1024x727.png\" class=\"wp-image-509\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.3-1024x727.png?resize=650%2C462\" alt=\"Adding Rows\" width=\"650\" height=\"462\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.3.png?resize=1024%2C727&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.3.png?resize=300%2C213&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.3.png?resize=768%2C546&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.3.png?w=1253&amp;ssl=1 1253w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><figcaption id=\"caption-attachment-509\" class=\"wp-caption-text\"><strong>Adding Rows<\/strong><\/figcaption><\/figure>\n<p>The corresponding view in the StorageExplorer is shown below.<\/p>\n<figure id=\"attachment_510\" aria-describedby=\"caption-attachment-510\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.4.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"510\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2017\/04\/23\/accessing-azure-tables-in-lisp\/fig-4-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.4.png\" data-orig-size=\"1138,581\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"New Rows in Storage Explorer\" data-image-description=\"&lt;p&gt;New Rows in Storage Explorer&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;New Rows in Storage Explorer&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.4-1024x523.png\" class=\"wp-image-510\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.4-1024x523.png?resize=650%2C332\" alt=\"New Rows in Storage Explorer\" width=\"650\" height=\"332\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.4.png?resize=1024%2C523&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.4.png?resize=300%2C153&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.4.png?resize=768%2C392&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.4.png?w=1138&amp;ssl=1 1138w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><figcaption id=\"caption-attachment-510\" class=\"wp-caption-text\"><strong>New Rows in Storage Explorer<\/strong><\/figcaption><\/figure>\n<p>The last operation we will try is the <em><strong>delete-table<\/strong><\/em> command. This will delete a table and all its contents.<\/p>\n<figure id=\"attachment_511\" aria-describedby=\"caption-attachment-511\" style=\"width: 649px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.5.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"511\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2017\/04\/23\/accessing-azure-tables-in-lisp\/fig-5-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.5.png\" data-orig-size=\"1254,979\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Deleting Table\" data-image-description=\"&lt;p&gt;Deleting Table&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;Deleting Table&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.5-1024x799.png\" class=\"wp-image-511\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.5-1024x799.png?resize=649%2C507\" alt=\"Deleting Table\" width=\"649\" height=\"507\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.5.png?resize=1024%2C799&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.5.png?resize=300%2C234&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.5.png?resize=768%2C600&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.5.png?w=1254&amp;ssl=1 1254w\" sizes=\"(max-width: 649px) 100vw, 649px\" \/><\/a><figcaption id=\"caption-attachment-511\" class=\"wp-caption-text\"><strong>Deleting Table<\/strong><\/figcaption><\/figure>\n<p>If you refresh the <em><strong>StorageExplorer<\/strong><\/em> view at this time, you can see that there is no table in the account,<\/p>\n<figure id=\"attachment_512\" aria-describedby=\"caption-attachment-512\" style=\"width: 651px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.6.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"512\" data-permalink=\"https:\/\/www.rangakrish.com\/index.php\/2017\/04\/23\/accessing-azure-tables-in-lisp\/fig-6-2\/\" data-orig-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.6.png\" data-orig-size=\"842,581\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"After Table Deletion\" data-image-description=\"&lt;p&gt;After Table Deletion&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;After Table Deletion&lt;\/p&gt;\n\" data-large-file=\"https:\/\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.6.png\" class=\"wp-image-512\" src=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.6.png?resize=651%2C449\" alt=\"After Table Deletion\" width=\"651\" height=\"449\" srcset=\"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.6.png?w=842&amp;ssl=1 842w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.6.png?resize=300%2C207&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.6.png?resize=768%2C530&amp;ssl=1 768w\" sizes=\"(max-width: 651px) 100vw, 651px\" \/><\/a><figcaption id=\"caption-attachment-512\" class=\"wp-caption-text\"><strong>After Table Deletion<\/strong><\/figcaption><\/figure>\n<p>As noted earlier, the\u00a0library is far from complete. Hope that the author will revisit it and complete it in the near future.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the previous post, we saw how to use cl-azure\u00a0to access Azure storage, in particular, BLOBs. Today we will experiment with Tables. The following operations are currently supported by the library: &#8211; Create a new table &#8211; List all the tables available &#8211; Add rows to a table &#8211; List the contents of a table [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_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_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[18,17],"tags":[95,96],"class_list":["post-506","post","type-post","status-publish","format-standard","hentry","category-lisp","category-programming","tag-azure","tag-table-storage"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9OLnF-8a","jetpack-related-posts":[{"id":495,"url":"https:\/\/www.rangakrish.com\/index.php\/2017\/04\/08\/accessing-azure-blobs-in-lisp\/","url_meta":{"origin":506,"position":0},"title":"Accessing Azure BLOBs in Lisp","author":"admin","date":"April 8, 2017","format":false,"excerpt":"Recently I was looking for a Common Lisp library for accessing Azure services. Azure has official SDKs in many languages, but Lisp is not one of them. Quite understandable and I have no complaints. Because the services are all exposed via REST interfaces, it should not be difficult to implement\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"Fig.1","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.1.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.1.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2017\/04\/Fig.1.png?resize=525%2C300 1.5x"},"classes":[]},{"id":2042,"url":"https:\/\/www.rangakrish.com\/index.php\/2020\/07\/05\/closure-in-lisp-vs-elixir\/","url_meta":{"origin":506,"position":1},"title":"Closure in Lisp vs Elixir","author":"admin","date":"July 5, 2020","format":false,"excerpt":"I started learning Elixir\u00a0a week ago. Although this has been at the top of my To-do list for quite a while, I couldn't take it up due to other commitments.\u00a0 I love Elixir. It is a great functional programming language. Having programmed in Lisp for a long time, I immediately\u2026","rel":"","context":"In &quot;Elixir&quot;","block_context":{"text":"Elixir","link":"https:\/\/www.rangakrish.com\/index.php\/category\/elixir\/"},"img":{"alt_text":"Program Output","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2020\/07\/elixir-output2.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2020\/07\/elixir-output2.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2020\/07\/elixir-output2.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2020\/07\/elixir-output2.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":558,"url":"https:\/\/www.rangakrish.com\/index.php\/2017\/07\/07\/clpython-python-in-common-lisp\/","url_meta":{"origin":506,"position":2},"title":"CLPython &#8211; Python in Common Lisp","author":"admin","date":"July 7, 2017","format":false,"excerpt":"My work in the area of NLP requires\u00a0me to work with several frameworks across multiple languages such as Java, Python and Lisp. Sometime ago I got a chance to experiment with CLPython, an open-source implementation of Python in Common Lisp. Although CLPython is not under active development now, I found\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3599,"url":"https:\/\/www.rangakrish.com\/index.php\/2025\/01\/20\/using-openai-from-allegro-common-lisp\/","url_meta":{"origin":506,"position":3},"title":"Using OpenAI from Allegro Common Lisp","author":"admin","date":"January 20, 2025","format":false,"excerpt":"Allegro Common Lisp ver 11.0\u00a0introduced support for OpenAI LLMs. In this article, let us look at some of the functions for interacting with OpenAI. First we need to specify basic parameters such as the API key, LLM to use, Temperature, etc. I have defined a convenient function configure-openai to do\u2026","rel":"","context":"In &quot;LISP&quot;","block_context":{"text":"LISP","link":"https:\/\/www.rangakrish.com\/index.php\/category\/lisp\/"},"img":{"alt_text":"Configuring the LLM","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2025\/01\/fig1-300x101.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1517,"url":"https:\/\/www.rangakrish.com\/index.php\/2019\/03\/28\/ocr-using-azure-computer-vision-api\/","url_meta":{"origin":506,"position":4},"title":"OCR Using Azure Computer Vision API","author":"admin","date":"March 28, 2019","format":false,"excerpt":"I have been getting some good feedback on Azure\u2019s Computer Vision API, in particular, the OCR functionality. Although I am not working on any project that requires this functionality at the moment, I thought it would be a good idea to check out the service - just to be \u201cfuture\u2026","rel":"","context":"In &quot;Image Processing&quot;","block_context":{"text":"Image Processing","link":"https:\/\/www.rangakrish.com\/index.php\/category\/image-processing\/"},"img":{"alt_text":"Converted Text","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Converted-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Converted-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2019\/03\/Converted-1.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":2057,"url":"https:\/\/www.rangakrish.com\/index.php\/2020\/07\/19\/calling-lisp-functions-from-elixir\/","url_meta":{"origin":506,"position":5},"title":"Calling Lisp Functions from Elixir","author":"admin","date":"July 19, 2020","format":false,"excerpt":"In the last article\u00a0I showed how we can simulate the idea of Lisp's \"closure\" in Elixir. Today, I would like to demonstrate how we can call Lisp functions from Elixir using the NIF interface. What is the need to integrate Elixir with another language? I can think of two reasons:\u2026","rel":"","context":"In &quot;Elixir&quot;","block_context":{"text":"Elixir","link":"https:\/\/www.rangakrish.com\/index.php\/category\/elixir\/"},"img":{"alt_text":"Using the Lisp Functions","src":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2020\/07\/Session.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2020\/07\/Session.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2020\/07\/Session.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.rangakrish.com\/wp-content\/uploads\/2020\/07\/Session.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/506","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/comments?post=506"}],"version-history":[{"count":0,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/posts\/506\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/media?parent=506"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/categories?post=506"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rangakrish.com\/index.php\/wp-json\/wp\/v2\/tags?post=506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}