41554 blogs · [ { "id": "01a087a6-9563-7294-aded-0e6b1b2c72ad", "title": "The Inference Engine - Bringing Models to Life", "url": "https://milendyankov.com/blog/2026/04/The-Inference-Engine-Bringing-Models-to-Life", "published_at": "2026-04-15T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b1b152a6c", "title": "Anatomy of a Model - the Developer Perspective", "url": "https://milendyankov.com/blog/2026/03/Anatomy-of-a-Model-the-Developer-Perspective", "published_at": "2026-03-23T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b1a4c246e", "title": "A Trip in the AI/ML Model Formats Jungle", "url": "https://milendyankov.com/blog/2026/03/A-Trip-in-the-AI-ML-Model-Formats-Jungle", "published_at": "2026-03-14T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b1a2a32ca", "title": "AI/ML Models Are Not Libraries", "url": "https://milendyankov.com/blog/2026/03/AI-ML-Models-Are-Not-Libraries", "published_at": "2026-03-08T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b199b9591", "title": "AI for Application Developers", "url": "https://milendyankov.com/blog/2026/03/AI-for-Application-Developers", "published_at": "2026-03-01T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b19001305", "title": "Finite and Infinite Startups", "url": "https://milendyankov.com/blog/2026/01/Finite-and-Infinite-Startups", "published_at": "2026-01-27T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b1896f387", "title": "Multi-Hat Disorder - Building Personal Website Like an Enterprise App", "url": "https://milendyankov.com/blog/2026/01/Multi-Hat-Disorder-Building-Personal-Website-Like-an-Enterprise-App", "published_at": "2026-01-02T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b1852b2d9", "title": "Operational vs. Strategic DevX", "url": "https://milendyankov.com/blog/2022/10/operational_vs_strategic_devx", "published_at": "2022-10-23T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b17d7fc89", "title": "The macroscale of micro frustrations", "url": "https://milendyankov.com/blog/2022/02/the_macroscale_of_micro_frustrations", "published_at": "2022-02-20T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b17818898", "title": "From DevRel to Developer eXperience", "url": "https://milendyankov.com/blog/2022/02/from_devrel_to_developer_experience", "published_at": "2022-02-10T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b174f7120", "title": "What dev heck?", "url": "https://milendyankov.com/blog/2022/02/what_dev_heck", "published_at": "2022-02-09T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b16c24a05", "title": "Data classes in Java", "url": "https://milendyankov.com/blog/2020/08/data_classes_in_java", "published_at": "2020-08-30T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b168cd53f", "title": "Mind the involuntary observational learning", "url": "https://milendyankov.com/blog/2019/12/Mind-the-involuntary-observational-learning", "published_at": "2019-12-14T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b166f312d", "title": "Conference Tracker", "url": "https://milendyankov.com/blog/2019/12/Conference-Tracker", "published_at": "2019-12-02T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b15ba08cd", "title": "Would you attend one of those talks?", "url": "https://milendyankov.com/blog/2019/11/Would-you-attend-one-of-those-talks", "published_at": "2019-11-12T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b14ed91c2", "title": "Fire alarm at software conference", "url": "https://milendyankov.com/blog/2018/11/fire_alarm_at_software_conference", "published_at": "2018-11-24T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b141d8bf7", "title": "The fruits of our labor", "url": "https://milendyankov.com/blog/2018/02/the_fruits_of_our_labor", "published_at": "2018-02-14T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b1415c7d2", "title": "Java EE, EE4J, OSGi, ... and the paradox of choice", "url": "https://milendyankov.com/blog/2018/01/JavaEE_EE4J_OSGi_and_the_paradox_of_choice", "published_at": "2018-01-09T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b134904bf", "title": "Am I against JPMS and microservices?", "url": "https://milendyankov.com/blog/2017/11/Am_I_against_JPMS_and_microservices", "published_at": "2017-11-10T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b127b76ee", "title": "Cleaning up my GitHub mess", "url": "https://milendyankov.com/blog/2017/09/Cleaning_up_my_github_mess", "published_at": "2017-09-03T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b12193f65", "title": "What to expect in post-JPMS Java world", "url": "https://milendyankov.com/blog/2017/05/What_to_expect_in_post-JPMS_Java_world", "published_at": "2017-05-06T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b113703ad", "title": "Getting feedback live", "url": "https://milendyankov.com/blog/2017/03/Getting_feedback_live", "published_at": "2017-03-16T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b105d84ed", "title": "All Those Little Things", "url": "https://milendyankov.com/blog/2017/02/those_little_things", "published_at": "2017-02-21T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b0ffc65e3", "title": "Developers about OSGi", "url": "https://milendyankov.com/blog/2016/09/developers_about_OSGi", "published_at": "2016-09-30T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b0f590538", "title": "Micro-services or μServices", "url": "https://milendyankov.com/blog/2016/09/microservices_or_Services", "published_at": "2016-09-21T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b0ea00877", "title": "Java: 21 & Legally drunk!", "url": "https://milendyankov.com/blog/2016/06/Java_21_and_legally_drunk", "published_at": "2016-06-13T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b0e062441", "title": "Lessons learned from speaking at conferences", "url": "https://milendyankov.com/blog/2016/05/lessons_learned_from_speaking_at_conferences", "published_at": "2016-05-04T00:00:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b0d6ede75", "title": "Cross blogging", "url": "https://milendyankov.com/blog/2013/06/cross_blogging", "published_at": "2013-06-28T09:30:58+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b0d344890", "title": "About complexity, modularity and OSGi", "url": "https://milendyankov.com/blog/2013/02/about_complexity_modularity_and_osgi", "published_at": "2013-02-06T09:56:02+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b0c7dc63c", "title": "How to use CustomGlobalMarkup portlet to add image slider on every Liferay page", "url": "https://milendyankov.com/blog/2012/06/how_to_use_customglobalmarkup_portlet_to_add_image_slider_on_every_liferay_page", "published_at": "2012-06-18T14:06:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b0bc557d2", "title": "Mobile device detection in Liferay 6.1", "url": "https://milendyankov.com/blog/2012/05/mobile_device_detection_in_liferay_61", "published_at": "2012-05-29T12:28:24+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b0acfa912", "title": "Liferay Portal Systems Development - review", "url": "https://milendyankov.com/blog/2012/04/liferay_portal_systems_development_-_review", "published_at": "2012-04-01T12:52:53+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b0a1405f4", "title": "Liferay Beginner's Guide - review", "url": "https://milendyankov.com/blog/2012/02/liferay_beginners_guide_-_review", "published_at": "2012-02-01T06:34:59+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b096dd176", "title": "Simple mobile device emulator in Firefox", "url": "https://milendyankov.com/blog/2011/10/simple_mobile_device_emulator_in_firefox", "published_at": "2011-10-27T23:22:12+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b0883c0fb", "title": "Liferay - preserve GWT portlet state between reloads", "url": "https://milendyankov.com/blog/2011/03/liferay_preserve_gwt_portlet_state_between_reloads", "published_at": "2011-03-23T06:53:31+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b0830449e", "title": "Liferay GWT portlet - replacing GWT-RPC with JSON", "url": "https://milendyankov.com/blog/2011/03/liferay_gwt_portlet_replacing_gwt-rpc_with_json", "published_at": "2011-03-17T18:05:14+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b080da923", "title": "Liferay multi-device extension", "url": "https://milendyankov.com/blog/2011/03/liferay_multidevice_extension", "published_at": "2011-03-10T04:52:15+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b07a14d2f", "title": "Liferay GWT portlet - how to make it \"instanceable\" and use GWT RPC", "url": "https://milendyankov.com/blog/2011/01/liferay_gwt_portlet_how_to_make_it_instanceable_and_use_gwt_rpc", "published_at": "2011-01-29T14:46:35+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b072f5ece", "title": "Liferay User Interface Development", "url": "https://milendyankov.com/blog/2010/12/liferay_user_interface_development", "published_at": "2010-12-11T15:56:00+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b07152f16", "title": "Liferay plug-ins adapted to work with Liferay 6.0.5", "url": "https://milendyankov.com/blog/2010/11/liferay-plug-ins-adapted-to-work-with-liferay-6-0-5", "published_at": "2010-11-08T21:12:16+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b065ab257", "title": "Just added 'J' in front of WebThumb", "url": "https://milendyankov.com/blog/2010/07/just_added_j_in_front_of_webthumb", "published_at": "2010-07-22T22:21:42+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b05e9dac5", "title": "More \"Simple\" than \"XStream\"", "url": "https://milendyankov.com/blog/2010/07/more_simple_than_xstream", "published_at": "2010-07-19T22:56:21+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b057ef217", "title": "Liferay Portal 6 Enterprise Intranets review", "url": "https://milendyankov.com/blog/2010/07/liferay_portal_6_enterprise_intranets_review", "published_at": "2010-07-04T07:56:19+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b051a3b2a", "title": "Writing Liferay portlet to display a file in a way \"tail -f\" does", "url": "https://milendyankov.com/blog/2010/05/writing_liferay_portlet_to_display_a_file_in_a_way_tail_-f_does", "published_at": "2010-05-03T22:10:42+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b0492f7cf", "title": "Custom global markup portlet", "url": "https://milendyankov.com/blog/2010/04/custom_global_markup_portlet", "published_at": "2010-04-05T22:40:01+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b042e52ef", "title": "Creating Liferay portlet with liferay-maven-sdk", "url": "https://milendyankov.com/blog/2009/10/creating_liferay_portlet_with_liferay-maven-sdk", "published_at": "2009-10-09T21:47:50+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b035c2a97", "title": "Run GWT application in \"hosted mode\" from maven", "url": "https://milendyankov.com/blog/2009/04/run_gwt_application_in_hosted_mode_from_maven", "published_at": "2009-04-26T10:39:35+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b02c04efc", "title": "ATG session tracking cookies and subdomains.", "url": "https://milendyankov.com/blog/2009/01/atg_session_tracking_cookies_and_subdomains", "published_at": "2009-01-29T13:50:58+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b0246c5a8", "title": "I just finished installing Movable Type", "url": "https://milendyankov.com/blog/2009/01/i_just_finished_installing_movable_type_4", "published_at": "2009-01-01T22:42:34+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b01c4183a", "title": "Simple Java program to merge Excel survey results", "url": "https://milendyankov.com/blog/2008/12/simple_java_program_to_merge_excel_survey_results", "published_at": "2008-12-29T13:13:20+00:00" }, { "id": "01a087a6-9563-7294-aded-0e6b014ea225", "title": "Tagging the latest version of previously tagged files in CVS", "url": "https://milendyankov.com/blog/2006/02/tagging_the_latest_version_of_previously_tagged_files_in_cvs", "published_at": "2006-02-10T02:06:44+00:00" } ] posts Claim your blog
Back to milendyankov.com
Blog · corpus.blog/blogs/milendyankov.com/posts

milendyankov.com

milendyankov.com

2026

2022

2020

2019

2018

2017

2016

2013

2012

2011

2010

2009

2008

2006