<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Praveer&apos;s Musings</title><description>A place where Praveer shares his learnings on software craftsmanship.</description><link>https://praveergupta.in/</link><item><title>Practical Guide to Java Stream API</title><link>https://praveergupta.in/blog/practical-guide-to-java-stream-api/</link><guid isPermaLink="true">https://praveergupta.in/blog/practical-guide-to-java-stream-api/</guid><description>An introduction to Java 8&apos;s Stream API and how it brings a declarative approach to operations over collections.</description><pubDate>Sat, 24 Nov 2018 00:00:00 GMT</pubDate><category>java</category></item><item><title>Offline installation of Python packages and Ruby gems</title><link>https://praveergupta.in/blog/offline-installation-of-python-packages-and-ruby-gems/</link><guid isPermaLink="true">https://praveergupta.in/blog/offline-installation-of-python-packages-and-ruby-gems/</guid><description>How to install Python packages and Ruby gems offline on systems without internet access.</description><pubDate>Tue, 06 Mar 2018 00:00:00 GMT</pubDate><category>devops</category></item><item><title>Using Java 8&apos;s Function interface for extension</title><link>https://praveergupta.in/blog/using-java-8-function-interface-for-extension/</link><guid isPermaLink="true">https://praveergupta.in/blog/using-java-8-function-interface-for-extension/</guid><description>Extending existing interfaces without breaking code using Java 8&apos;s Function interface and its apply, compose and andThen methods.</description><pubDate>Fri, 03 Nov 2017 00:00:00 GMT</pubDate><category>java</category><category>functional-programming</category></item><item><title>Practical Guide to Java 8’s Date Time API</title><link>https://praveergupta.in/blog/practical-guide-to-java-8-s-date-time-api/</link><guid isPermaLink="true">https://praveergupta.in/blog/practical-guide-to-java-8-s-date-time-api/</guid><description>A practical guide to the everyday features of Java 8&apos;s Date Time API (JSR-310).</description><pubDate>Fri, 03 Mar 2017 00:00:00 GMT</pubDate><category>java</category></item><item><title>Spring up an application quickly with Spring Boot</title><link>https://praveergupta.in/blog/spring-up-an-application-quickly-with-spring-boot/</link><guid isPermaLink="true">https://praveergupta.in/blog/spring-up-an-application-quickly-with-spring-boot/</guid><description>A video walkthrough of how Spring Boot lets you spring up an application quickly with sensible defaults.</description><pubDate>Sat, 05 Nov 2016 00:00:00 GMT</pubDate></item><item><title>How functional programming helps me write clean code</title><link>https://praveergupta.in/blog/how-functional-programming-helps-me-write-clean-code/</link><guid isPermaLink="true">https://praveergupta.in/blog/how-functional-programming-helps-me-write-clean-code/</guid><description>How functional programming techniques help me write code that is easy to read and reason about.</description><pubDate>Fri, 05 Aug 2016 00:00:00 GMT</pubDate><category>functional-programming</category></item><item><title>Using asynchrony to reduce response times in Java 8</title><link>https://praveergupta.in/blog/using-asynchrony-to-reduce-response-times/</link><guid isPermaLink="true">https://praveergupta.in/blog/using-asynchrony-to-reduce-response-times/</guid><description>Using Java 8&apos;s CompletableFuture to write asynchronous code and reduce backend service response times.</description><pubDate>Thu, 28 Jul 2016 00:00:00 GMT</pubDate><category>java</category><category>functional-programming</category><category>multi-threading</category></item><item><title>Book Review - Soft Skills: The software developer&apos;s life manual</title><link>https://praveergupta.in/blog/book-review-soft-skills/</link><guid isPermaLink="true">https://praveergupta.in/blog/book-review-soft-skills/</guid><description>A review of &apos;Soft Skills: The Software Developer&apos;s Life Manual&apos; and how it helped me grow professionally and personally.</description><pubDate>Tue, 19 Jul 2016 00:00:00 GMT</pubDate></item><item><title>Java 8 Optional as a Monad</title><link>https://praveergupta.in/blog/java-8-optional-as-a-monad/</link><guid isPermaLink="true">https://praveergupta.in/blog/java-8-optional-as-a-monad/</guid><description>Looking at Java 8&apos;s Optional through the lens of monads, and blending functional and object-oriented styles.</description><pubDate>Thu, 14 Jul 2016 00:00:00 GMT</pubDate><category>java</category><category>functional-programming</category></item><item><title>REST Error Responses in Spring Boot</title><link>https://praveergupta.in/blog/rest-error-responses-in-spring-boot/</link><guid isPermaLink="true">https://praveergupta.in/blog/rest-error-responses-in-spring-boot/</guid><description>How Spring Boot formats REST error responses, and how to shape them so clients can handle errors gracefully.</description><pubDate>Fri, 08 Jul 2016 00:00:00 GMT</pubDate><category>java</category><category>spring</category></item><item><title>Writing Comparators - The Java 8 Way</title><link>https://praveergupta.in/blog/writing-comparators-the-java8-way/</link><guid isPermaLink="true">https://praveergupta.in/blog/writing-comparators-the-java8-way/</guid><description>Writing expressive Comparators declaratively using Java 8&apos;s default and static factory methods.</description><pubDate>Tue, 21 Jun 2016 00:00:00 GMT</pubDate><category>java</category><category>functional-programming</category></item><item><title>RxJava - Part 3 - Multithreading</title><link>https://praveergupta.in/blog/rxjava-part-3-multithreading/</link><guid isPermaLink="true">https://praveergupta.in/blog/rxjava-part-3-multithreading/</guid><description>Writing multithreaded RxJava programs using Schedulers and the subscribeOn and observeOn operators.</description><pubDate>Mon, 29 Feb 2016 00:00:00 GMT</pubDate><category>java</category><category>reactive-programming</category><category>multi-threading</category></item><item><title>RxJava - Part 2 - Creating an Observable</title><link>https://praveergupta.in/blog/rxjava-part-2-creating-an-observable/</link><guid isPermaLink="true">https://praveergupta.in/blog/rxjava-part-2-creating-an-observable/</guid><description>A mental map of RxJava&apos;s many Observable factory methods and when to use each one.</description><pubDate>Sun, 21 Feb 2016 00:00:00 GMT</pubDate><category>java</category><category>reactive-programming</category></item><item><title>RxJava - Part 1 - A Quick Introduction</title><link>https://praveergupta.in/blog/rxjava-part-1-a-quick-introduction/</link><guid isPermaLink="true">https://praveergupta.in/blog/rxjava-part-1-a-quick-introduction/</guid><description>A quick introduction to reactive programming and RxJava for writing asynchronous, resilient applications.</description><pubDate>Sat, 13 Feb 2016 00:00:00 GMT</pubDate><category>java</category><category>reactive-programming</category></item><item><title>Testing REST APIs with REST-assured</title><link>https://praveergupta.in/blog/testing-rest-apis-with-rest-assured/</link><guid isPermaLink="true">https://praveergupta.in/blog/testing-rest-apis-with-rest-assured/</guid><description>Using REST-assured&apos;s Java DSL to write expressive tests for REST APIs.</description><pubDate>Sat, 06 Feb 2016 00:00:00 GMT</pubDate><category>java</category><category>testing</category></item><item><title>Scoped Objects in Dagger 2</title><link>https://praveergupta.in/blog/scoped-objects-in-dagger-2/</link><guid isPermaLink="true">https://praveergupta.in/blog/scoped-objects-in-dagger-2/</guid><description>How Dagger 2 lets you manage objects with different life-cycles using scopes.</description><pubDate>Sat, 23 Jan 2016 00:00:00 GMT</pubDate><category>java</category></item><item><title>Writing Test Data Builders Made Easy With Kotlin</title><link>https://praveergupta.in/blog/writing-test-data-builders-made-easy-with-kotlin/</link><guid isPermaLink="true">https://praveergupta.in/blog/writing-test-data-builders-made-easy-with-kotlin/</guid><description>Using Kotlin&apos;s language features to write concise, readable Test Data Builders for your tests.</description><pubDate>Sat, 26 Dec 2015 00:00:00 GMT</pubDate><category>kotlin</category><category>testing</category></item><item><title>Understanding Thread Interruption in Java</title><link>https://praveergupta.in/blog/understanding-thread-interruption-in-java/</link><guid isPermaLink="true">https://praveergupta.in/blog/understanding-thread-interruption-in-java/</guid><description>How thread interruption works in Java and how to use it to stop long-running tasks cleanly.</description><pubDate>Sun, 06 Dec 2015 00:00:00 GMT</pubDate><category>java</category></item><item><title>Using Optional to Specify Presence or Absence of a Value</title><link>https://praveergupta.in/blog/using-optional-to-specify-presence-or-absence-of-a-value/</link><guid isPermaLink="true">https://praveergupta.in/blog/using-optional-to-specify-presence-or-absence-of-a-value/</guid><description>How Java 8&apos;s Optional helps model the presence or absence of a value and write null-safe code.</description><pubDate>Sat, 19 Sep 2015 00:00:00 GMT</pubDate><category>java</category><category>functional-programming</category></item><item><title>Functional Programming for the Object Oriented Minds</title><link>https://praveergupta.in/blog/functional-programming-for-the-object-oriented-minds/</link><guid isPermaLink="true">https://praveergupta.in/blog/functional-programming-for-the-object-oriented-minds/</guid><description>An introduction to functional programming and how it can improve the everyday work of object-oriented developers.</description><pubDate>Fri, 13 Jun 2014 00:00:00 GMT</pubDate><category>java</category><category>functional-programming</category></item></channel></rss>