<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Michael Williams&#039; Blog</title>
	<atom:link href="http://www.michaelwilliams.co.za/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.michaelwilliams.co.za</link>
	<description>Programming, business etc</description>
	<lastBuildDate>Wed, 15 Jun 2022 12:50:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.7.24</generator>
	<item>
		<title>How To Wait Until A Glue Crawler Is Complete In A Step Function</title>
		<link>http://www.michaelwilliams.co.za/how-to-wait-until-a-glue-crawler-is-complete-in-step-function/</link>
		<comments>http://www.michaelwilliams.co.za/how-to-wait-until-a-glue-crawler-is-complete-in-step-function/#respond</comments>
		<pubDate>Wed, 15 Jun 2022 12:45:51 +0000</pubDate>
		<dc:creator><![CDATA[Michael]]></dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Crawler]]></category>
		<category><![CDATA[Glue]]></category>
		<category><![CDATA[Step Functions]]></category>

		<guid isPermaLink="false">http://www.michaelwilliams.co.za/?p=1403</guid>
		<description><![CDATA[In a Step Function we&#8217;re able to wait until a Glue Job is complete before moving on to the next step by checking &#8220;Wait for task to complete&#8221;. Tragically, not so with Glue Crawlers 🙁 There are several ways to &#8230; <a href="http://www.michaelwilliams.co.za/how-to-wait-until-a-glue-crawler-is-complete-in-step-function/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In a Step Function we&#8217;re able to wait until a Glue Job is complete before moving on to the next step by checking &#8220;Wait for task to complete&#8221;. Tragically, not so with Glue Crawlers <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>There are several ways to wait for a Crawler to complete. The easiest is to poll the state of the Crawler using a <a href="https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html#Glue.Client.get_crawler" target="_blank" rel="noopener noreferrer">Glue:GetCrawler</a> step. If the output is READY then move on, otherwise wait for a period and check again.</p>
<p><a href="http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-14.13.41.png"><img class="aligncenter size-full wp-image-1407" src="http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-14.13.41.png" alt="" width="1298" height="1010" srcset="http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-14.13.41.png 1298w, http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-14.13.41-300x233.png 300w, http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-14.13.41-768x598.png 768w, http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-14.13.41-1024x797.png 1024w" sizes="(max-width: 1298px) 100vw, 1298px" /></a></p>
<p>Remember to add the Output from the Glue:GetCrawler step. This allows us to check it in the Choice State.</p>
<p><a href="http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-13.59.06.png"><img class="aligncenter size-full wp-image-1405" src="http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-13.59.06.png" alt="" width="1056" height="1178" srcset="http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-13.59.06.png 1056w, http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-13.59.06-269x300.png 269w, http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-13.59.06-768x857.png 768w, http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-13.59.06-918x1024.png 918w" sizes="(max-width: 1056px) 100vw, 1056px" /></a></p>
<p>In the Choice State test that the $testCrawlerState.Crawler.State is equal to the string constant READY.</p>
<p><a href="http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-13.59.19.png"><img class="aligncenter size-full wp-image-1406" src="http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-13.59.19.png" alt="" width="3544" height="830" srcset="http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-13.59.19.png 3544w, http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-13.59.19-300x70.png 300w, http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-13.59.19-768x180.png 768w, http://www.michaelwilliams.co.za/wp-content/uploads/2022/06/Screenshot-2022-06-15-at-13.59.19-1024x240.png 1024w" sizes="(max-width: 3544px) 100vw, 3544px" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelwilliams.co.za/how-to-wait-until-a-glue-crawler-is-complete-in-step-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Almost Useless Top Tip for Today: Lombok @RequiredArgsConstructor</title>
		<link>http://www.michaelwilliams.co.za/almost-useless-top-tip-for-today-lombok-requiredargsconstructor/</link>
		<comments>http://www.michaelwilliams.co.za/almost-useless-top-tip-for-today-lombok-requiredargsconstructor/#respond</comments>
		<pubDate>Fri, 09 Jul 2021 09:08:52 +0000</pubDate>
		<dc:creator><![CDATA[Michael]]></dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lombok]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://www.michaelwilliams.co.za/?p=1397</guid>
		<description><![CDATA[Wiring up Spring Components using @Autowired is convenient but makes testing harder. A better solution is passing dependencies in through a constructor. However, that means creating a constructor. Lombok to the rescue with the @AllArgsConstructor annotation which will create a &#8230; <a href="http://www.michaelwilliams.co.za/almost-useless-top-tip-for-today-lombok-requiredargsconstructor/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Wiring up Spring Components using @Autowired is convenient but makes testing harder. A better solution is passing dependencies in through a constructor. However, that means creating a constructor. Lombok to the rescue with the @AllArgsConstructor annotation which will create a constructor that requires all your Class variables. Great for most situations but what if you want only some variables initialised through the constructor? Use the <a href="https://projectlombok.org/features/constructor" rel="noopener" target="_blank">@RequiredArgsConstructor</a> and make your variables final.</p>
<p><code><br />
@Component<br />
@RequiredArgsConstructor<br />
public class MyService {<br />
    private final MyFirstDependency firstDependency;<br />
    private final MySecondDependency secondDependency;</p>
<p>    private MyThirdDependency optionalDependency;<br />
}<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelwilliams.co.za/almost-useless-top-tip-for-today-lombok-requiredargsconstructor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring Slueth Stops JMSListener Consuming Messages</title>
		<link>http://www.michaelwilliams.co.za/spring-slueth-stops-jmslistener-consuming-messages/</link>
		<comments>http://www.michaelwilliams.co.za/spring-slueth-stops-jmslistener-consuming-messages/#respond</comments>
		<pubDate>Sat, 26 Oct 2019 12:04:38 +0000</pubDate>
		<dc:creator><![CDATA[Michael]]></dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring Boot]]></category>
		<category><![CDATA[Spring Sleuth]]></category>

		<guid isPermaLink="false">http://www.michaelwilliams.co.za/?p=1389</guid>
		<description><![CDATA[Adding the following dependency causes JMS messages to stop being consumed. org.springframework.cloud spring-cloud-starter-sleuth 2.1.0.RELEASE The issue is that Spring Sleuth prevents the JMSListener from being registered as per: Jms listeners not running To fix use version 2.1.1.RELEASE of spring-cloud-starter-sleuth: org.springframework.cloud &#8230; <a href="http://www.michaelwilliams.co.za/spring-slueth-stops-jmslistener-consuming-messages/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Adding the following dependency causes JMS messages to stop being consumed.</p>
<pre lang="xml">
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>
</pre>
<p>The issue is that Spring Sleuth prevents the JMSListener from being registered as per:<br />
<a href="https://github.com/spring-cloud/spring-cloud-sleuth/issues/1200" rel="noopener" target="_blank">Jms listeners not running</a></p>
<p>To fix use version 2.1.1.RELEASE of spring-cloud-starter-sleuth:</p>
<pre lang="xml">
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelwilliams.co.za/spring-slueth-stops-jmslistener-consuming-messages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://www.michaelwilliams.co.za/1378-2/</link>
		<comments>http://www.michaelwilliams.co.za/1378-2/#respond</comments>
		<pubDate>Tue, 11 Apr 2017 15:01:31 +0000</pubDate>
		<dc:creator><![CDATA[Michael]]></dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[moose-technology]]></category>
		<category><![CDATA[pharo]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.michaelwilliams.co.za/?p=1378</guid>
		<description><![CDATA[On Ubuntu 16.04 running pharo, from the Moose Technology download, results in the following error: unknown option: -plugins To fix, change: # execute exec "$LINUX/pharo" \ -plugins "$LINUX" \ -encoding utf8 \ -vm-display-X11 \ "$image" To: # execute exec "$LINUX/pharo" &#8230; <a href="http://www.michaelwilliams.co.za/1378-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>On Ubuntu 16.04 running pharo, from the Moose Technology download, results in the following error:</p>
<pre>unknown option: -plugins</pre>
<p>To fix, change:</p>
<pre># execute
exec "$LINUX/pharo" \
-plugins "$LINUX" \
-encoding utf8 \
-vm-display-X11 \
"$image"</pre>
<p>To:</p>
<pre># execute
exec "$LINUX/pharo" \
--plugins "$LINUX" \
--encoding utf8 \
"$image"</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelwilliams.co.za/1378-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Error on &#8216;inverse_transform&#8217; of LabelEncoder</title>
		<link>http://www.michaelwilliams.co.za/error-on-inverse_transform-of-labelencoder/</link>
		<comments>http://www.michaelwilliams.co.za/error-on-inverse_transform-of-labelencoder/#respond</comments>
		<pubDate>Mon, 09 Jan 2017 06:50:50 +0000</pubDate>
		<dc:creator><![CDATA[Michael]]></dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Machine LEarning]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[scikit-learn]]></category>

		<guid isPermaLink="false">http://www.michaelwilliams.co.za/?p=1371</guid>
		<description><![CDATA[If you get the following error when calling inverse_transform on sklearn.preprocessing.LabelEncoder ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() You could be passing in a numpy.ndarray of strings, not numeric &#8230; <a href="http://www.michaelwilliams.co.za/error-on-inverse_transform-of-labelencoder/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>If you get the following error when calling inverse_transform on sklearn.preprocessing.LabelEncoder<br />
<code><br />
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()<br />
</code><br />
You could be passing in a numpy.ndarray of strings, not numeric values.</p>
<p>Here&#8217;s a snippet to encode and decode a column from the <a href="https://www.kaggle.com/c/titanic/data" target="_blank">Titanic</a> training set:<br />
<code><br />
from sklearn.preprocessing import LabelEncoder</p>
<p>encoder = LabelEncoder()<br />
sex_cat = train_df["Sex"]<br />
sex_cat_encoded = encoder.fit_transform(sex_cat)<br />
print(encoder.inverse_transform(sex_cat_encoded))<br />
# print(encoder.inverse_transform(sex_cat)) This will give you the error<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelwilliams.co.za/error-on-inverse_transform-of-labelencoder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>October Jozi JUG &#8211; [Super Awesome Speaker] Nitsan Wakart presents JVM Profiler Mechanics</title>
		<link>http://www.michaelwilliams.co.za/october-jozi-jug-super-awesome-speaker-nitsan-wakart-presents-jvm-profiler-mechanics/</link>
		<comments>http://www.michaelwilliams.co.za/october-jozi-jug-super-awesome-speaker-nitsan-wakart-presents-jvm-profiler-mechanics/#respond</comments>
		<pubDate>Tue, 06 Oct 2015 17:59:19 +0000</pubDate>
		<dc:creator><![CDATA[Michael]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.michaelwilliams.co.za/?p=1365</guid>
		<description><![CDATA[Don&#8217;t miss this one! Nitsan will take us through all manner of dark JVM arts: A blogger and a coder with a pedantic passion for performance. My work has spanned army intelligence systems, dot.com era startups, financial institutions and innovative &#8230; <a href="http://www.michaelwilliams.co.za/october-jozi-jug-super-awesome-speaker-nitsan-wakart-presents-jvm-profiler-mechanics/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a title="[Super Awesome Speaker] Nitsan Wakart presents JVM Profiler Mechanics" href="http://www.meetup.com/Jozi-JUG/events/225728881/">Don&#8217;t miss this one! Nitsan will take us through all manner of dark JVM arts</a>:</p>
<blockquote><p>A blogger and a coder with a pedantic passion for performance. My work has spanned army intelligence systems, dot.com era startups, financial institutions and innovative product companies. Currently the Lead Performance Eng. for Azul Systems by day, and main contributor to kickass lock free data structures library JCTools by night.</p>
<p>We will take a deep dive into the guts of Honest-Profiler, an unbiased sampling CPU profiler for the JVM, and the JVM internals which enable it to work.</p>
<p>• Introduction: CPU profiling, sampling and biases explained.</p>
<p>• How does it hang together? interrupts, non-blocking code and an unofficial API</p>
<p>• Sampling the instruction pointer: how it works and limits of accuracy</p>
<p>• Walking the stack: demangling a mixed Java/native stack, challenges and limitations</p>
<p>• Reading a profile: flat profile vs. tree profile vs. flamegraphs</p>
<p>The talk will include some counter examples from other profilers(JVisualVM/JMC/YourKit/ZVision).</p></blockquote>
<p>See you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelwilliams.co.za/october-jozi-jug-super-awesome-speaker-nitsan-wakart-presents-jvm-profiler-mechanics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grails Bootstrap Form Field Error Template</title>
		<link>http://www.michaelwilliams.co.za/grails-bootstrap-form-field-error-template/</link>
		<comments>http://www.michaelwilliams.co.za/grails-bootstrap-form-field-error-template/#respond</comments>
		<pubDate>Sat, 04 Oct 2014 19:08:46 +0000</pubDate>
		<dc:creator><![CDATA[Michael]]></dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Bootstrap]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Template]]></category>

		<guid isPermaLink="false">http://www.michaelwilliams.co.za/?p=1355</guid>
		<description><![CDATA[Define a Grails template in /layouts/_formFieldError.gsp &#60;div class="form-group has-error"&#62; &#60;g:hasErrors bean="${fieldModel}" field="${fieldName}"&#62; &#60;div class="errors"&#62; &#60;g:eachError bean="${fieldModel}" field="${fieldName}"&#62; &#60;span class="help-block"&#62;&#60;g:message error="${it}"/&#62;&#60;/span&#62; &#60;/g:eachError&#62; &#60;/div&#62; &#60;/g:hasErrors&#62; &#60;/div&#62; Usage &#60;g:render template="/layouts/formFieldError" model="[fieldModel: myModelObject, fieldName: 'myFieldName']" /&#62;]]></description>
				<content:encoded><![CDATA[<p><strong>Define a Grails <a title="Templates and Views" href="http://grails.org/doc/latest/guide/theWebLayer.html#viewsAndTemplates" target="_blank">template</a> in /layouts/_formFieldError.gsp</strong><br />
<code>&lt;div class="form-group has-error"&gt;<br />
&lt;g:hasErrors bean="${fieldModel}" field="${fieldName}"&gt;<br />
&lt;div class="errors"&gt;<br />
&lt;g:eachError bean="${fieldModel}" field="${fieldName}"&gt;<br />
&lt;span class="help-block"&gt;&lt;g:message error="${it}"/&gt;&lt;/span&gt;<br />
&lt;/g:eachError&gt;<br />
&lt;/div&gt;<br />
&lt;/g:hasErrors&gt;<br />
&lt;/div&gt;<br />
</code><br />
<strong>Usage</strong><br />
<code>&lt;g:render template="/layouts/formFieldError" model="[fieldModel: myModelObject, fieldName: 'myFieldName']" /&gt;<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelwilliams.co.za/grails-bootstrap-form-field-error-template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Sure Our Technical Communities Are Safe Spaces For All</title>
		<link>http://www.michaelwilliams.co.za/making-sure-our-technical-communities-are-safe-spaces-for-all/</link>
		<comments>http://www.michaelwilliams.co.za/making-sure-our-technical-communities-are-safe-spaces-for-all/#respond</comments>
		<pubDate>Mon, 08 Sep 2014 20:09:13 +0000</pubDate>
		<dc:creator><![CDATA[Michael]]></dc:creator>
				<category><![CDATA[Event]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.michaelwilliams.co.za/?p=1348</guid>
		<description><![CDATA[The number of technical user groups in South Africa has grown and we&#8217;ve now got several vibrant communities. Which is awesome! If we want to make sure our communities continue to be as awesome and welcoming as they are, we need &#8230; <a href="http://www.michaelwilliams.co.za/making-sure-our-technical-communities-are-safe-spaces-for-all/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The number of technical user groups in South Africa has grown and we&#8217;ve now got several vibrant communities. Which is awesome!</p>
<p>If we want to make sure our communities continue to be as awesome and welcoming as they are, we need to take steps to ensure our events and on-line spaces stay safe. The easiest of which is the implementation and enforcement of an anti-harassment policy.</p>
<p>How easy is it? You can lift, almost word for word, a policy from the <a title="Geek Feminism Wiki" href="http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy" target="_blank">Geek Feminism Wiki</a>. We&#8217;ve done so at the <a title="Jozi JUG" href="http://www.meetup.com/Jozi-JUG/" target="_blank">Jozi JUG</a>.</p>
<p>If your group hasn&#8217;t instituted an anti-harassment policy, email the organizers and let them know they need one and where to get it!</p>
<div id="attachment_1352" style="width: 522px" class="wp-caption aligncenter"><a href="http://www.michaelwilliams.co.za/wp-content/uploads/2014/09/DukeWithHelmet.png"><img class="size-full wp-image-1352" src="http://www.michaelwilliams.co.za/wp-content/uploads/2014/09/DukeWithHelmet.png" alt="Duke gives the thumbs up to safe communities" width="512" height="512" srcset="http://www.michaelwilliams.co.za/wp-content/uploads/2014/09/DukeWithHelmet.png 512w, http://www.michaelwilliams.co.za/wp-content/uploads/2014/09/DukeWithHelmet-150x150.png 150w, http://www.michaelwilliams.co.za/wp-content/uploads/2014/09/DukeWithHelmet-300x300.png 300w" sizes="(max-width: 512px) 100vw, 512px" /></a><p class="wp-caption-text">Duke gives the thumbs up to safe communities</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelwilliams.co.za/making-sure-our-technical-communities-are-safe-spaces-for-all/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>August Jozi JUG &#8211; Docker and MongoDB</title>
		<link>http://www.michaelwilliams.co.za/august-jozi-jug-docker-and-mongodb/</link>
		<comments>http://www.michaelwilliams.co.za/august-jozi-jug-docker-and-mongodb/#respond</comments>
		<pubDate>Tue, 19 Aug 2014 20:53:50 +0000</pubDate>
		<dc:creator><![CDATA[Michael]]></dc:creator>
				<category><![CDATA[Event]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Jozi JUG]]></category>

		<guid isPermaLink="false">http://www.michaelwilliams.co.za/?p=1343</guid>
		<description><![CDATA[Want to learn all about Docker? Then come to the August Jozi JUG! RSVP and details on Meetup. New to Java and keen on learning about MongoDB? The Next Gen talk is just for you! RSVP and details on Meetup. &#160;]]></description>
				<content:encoded><![CDATA[<p>Want to learn all about Docker? Then come to the August Jozi JUG! RSVP and details on <a title="Meetup" href="http://www.meetup.com/Jozi-JUG/events/193737712/" target="_blank">Meetup</a>.</p>
<div id="attachment_1344" style="width: 310px" class="wp-caption aligncenter"><a href="http://www.michaelwilliams.co.za/wp-content/uploads/2014/08/docker.png"><img class="size-medium wp-image-1344" src="http://www.michaelwilliams.co.za/wp-content/uploads/2014/08/docker-300x232.png" alt="Docker" width="300" height="232" srcset="http://www.michaelwilliams.co.za/wp-content/uploads/2014/08/docker-300x232.png 300w, http://www.michaelwilliams.co.za/wp-content/uploads/2014/08/docker.png 792w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">Docker</p></div>
<p>New to Java and keen on learning about MongoDB? The Next Gen talk is just for you! RSVP and details on <a title="Meetup" href="http://www.meetup.com/Jozi-JUG/events/197992862/" target="_blank">Meetup</a>.</p>
<div id="attachment_1345" style="width: 282px" class="wp-caption aligncenter"><a href="http://www.michaelwilliams.co.za/wp-content/uploads/2014/08/mongodb.jpg"><img class="size-full wp-image-1345" src="http://www.michaelwilliams.co.za/wp-content/uploads/2014/08/mongodb.jpg" alt="MongoDB" width="272" height="124" /></a><p class="wp-caption-text">MongoDB</p></div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelwilliams.co.za/august-jozi-jug-docker-and-mongodb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>June Jozi JUG &#8211; Javascript, Nashorn and Project Avatar</title>
		<link>http://www.michaelwilliams.co.za/june-jozi-jug-javascript-nashorn-and-project-avatar/</link>
		<comments>http://www.michaelwilliams.co.za/june-jozi-jug-javascript-nashorn-and-project-avatar/#respond</comments>
		<pubDate>Tue, 17 Jun 2014 22:00:44 +0000</pubDate>
		<dc:creator><![CDATA[Michael]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.michaelwilliams.co.za/?p=1336</guid>
		<description><![CDATA[The June Jozi JUG will take place on 30 June at BBD from 18:00. So come through for great presentations as well as free food and drink. To RSVP please go to the groups Meetup page. Next Gen : The &#8230; <a href="http://www.michaelwilliams.co.za/june-jozi-jug-javascript-nashorn-and-project-avatar/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The June Jozi JUG will take place on 30 June at BBD from 18:00. So come through for great presentations as well as free food and drink. To RSVP please go to the groups <a title="Jozi JUG on Meetup" href="http://www.meetup.com/Jozi-JUG/">Meetup page</a>.</p>
<p><a title="Next Gen : The Jozi JUG Code Dojo Second Kata" href="http://www.meetup.com/Jozi-JUG/events/185917612/">Next Gen : The Jozi JUG Code Dojo Second Kata</a></p>
<blockquote>
<p style="color: rgba(0, 0, 0, 0.670588);">The Jozi JUG code dojo&#8217;s second white belt kata will be explained.</p>
<p style="color: rgba(0, 0, 0, 0.670588);">The Dojo is a totally free place where new Java developers in South Africa can learn modern techniques of the Java ecosystem.</p>
<p style="color: rgba(0, 0, 0, 0.670588);">The kata includes explaining the code of the first kata, modifying the program and pushing the code to github.</p>
</blockquote>
<div id="attachment_1339" style="width: 310px" class="wp-caption aligncenter"><a href="http://www.michaelwilliams.co.za/wp-content/uploads/2014/06/DukeFriendsSmall.png"><img class="size-medium wp-image-1339" src="http://www.michaelwilliams.co.za/wp-content/uploads/2014/06/DukeFriendsSmall-300x182.png" alt="Come on over!" width="300" height="182" srcset="http://www.michaelwilliams.co.za/wp-content/uploads/2014/06/DukeFriendsSmall-300x182.png 300w, http://www.michaelwilliams.co.za/wp-content/uploads/2014/06/DukeFriendsSmall.png 800w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">Come on over!</p></div>
<p><a title="History of JavaScript and new exciting features of Nashorn and Project Avatar" href="http://www.meetup.com/Jozi-JUG/events/185675652/">History of JavaScript and new exciting features of Nashorn and Project Avatar</a></p>
<blockquote><p>JavaScript is all the rage! If you have not heard of node-this-node-that there where have you been?</p>
<p>Not to want to miss all the attention, Oracle has put its brightest minds in upgrading Java’s JavaScript engines with 95% Java-To-Node compatibility.</p>
<p>Join Rory as we discover the history of JavaScript and the new exciting features of Nashorn and “Project Avatar”</p></blockquote>
<p>See you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelwilliams.co.za/june-jozi-jug-javascript-nashorn-and-project-avatar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
