Jekyll2020-04-26T15:51:36+00:00http://codergals.github.io/feed.xmlCoder GalsSolving Array Problems2020-02-08T00:00:00+00:002020-02-08T00:00:00+00:00http://codergals.github.io/solving-array-problemsMerge Sorted Arrays2020-01-09T18:03:00+00:002020-01-09T18:03:00+00:00http://codergals.github.io/merge-sorted-arrays<h2 id="88-merge-sorted-array">88. Merge Sorted Array</h2>
<p>Given two sorted integer arrays nums1 and nums2, merge nums2
into nums1 as one sorted array.</p>
<p>Note:</p>
<ol>
<li>The number of elements initialized in nums1 and nums2 are m and n respectively.</li>
<li>You may assume that nums1 has enough space (size that is greater or
equal to m + n) to hold additional elements from nums2.</li>
</ol>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> Example:
Input:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
Output: [1,2,2,3,5,6]
</code></pre></div></div>
<h3 id="1-first-solution">1. First Solution</h3>
<ul>
<li>Starting at the end of the first array -> nums1
<ul>
<li>compare the last initialized elements in each of the two arrays</li>
<li>which one is bigger we will put in the last element of the first array -> nums1[nums1.length-1]</li>
</ul>
<ol>
<li>First we start by comparing 6 and 3 -> which one is bigger? 6 -> nums1[nums1.length-1] => [1, 2, 3, 0, 0, 6]
1.1 We continue to compare 5 and 3 -> which one is bigger? 5 -> nums1[nums1.length-2] => [1, 2, 3, 0, 5, 6]
1.2 We continue to compare 2 and 3 -> which one is bigger? 3 -> nums1[nums1.length-3] => [1, 2, 3, 3, 5, 6]
1.3 We continue to compare 2 and 2 -> which one is bigger? no one -> nums1[nums1.length-4] => [1, 2, 2, 3, 5, 6]</li>
</ol>
<ul>
<li>m is the number of the initialized variables in nums1</li>
<li>n is the number of the initialized variables in nums2</li>
</ul>
</li>
</ul>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> const merge = function (nums1, m, nums2, n) {
let first = m - 1;
let second = n - 1;
for (let i = m + n - 1; i >= 0; i--) {
if (second < 0) {
break;
}
if (nums1[first] > nums2[second]) {
nums1[i] = nums1[first];
first--;
} else {
nums1[i] = nums2[second];
second--;
}
}
};
</code></pre></div></div>
<h3 id="2-second-solution">2. Second Solution</h3>
<p>Approach:</p>
<ul>
<li>
<p>Start from back of nums1 and iterate through both lists
backwards, putting the larger of nums1[m] and nums2[n] into the last
element of nums1 so far. Starting from the back allows us to
do this in one loop.</p>
</li>
<li>
<p>Once an element is copied over, it is in it’s “final spot” in the sorted
array, and will not move again.</p>
</li>
<li>
<p>The algorithm has a runtime of O(m+n) and space of O(1).</p>
</li>
<li>
<p>The latter is true because even though a variable is initialized,
it is not a function of the inputs m or n.</p>
</li>
<li>
<p>Note: This could have been done without initializing ‘final’ at all,
but it reads better with it.</p>
</li>
</ul>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
const merge = function (nums1, m, nums2, n) {
let final = m + n - 1;
m--;
n--;
while (m >= 0 || n >= 0) {
// if no more nums2 then just copy remaining m elements
if (n < 0 || nums1[m] > nums2[n]) {
nums1[final] = nums1[m];
m--;
} else { // m < 0 || nums1[m] < nums2[n]
nums1[final] = nums2[n];
n--;
}
final--;
}
return nums1;
};
</code></pre></div></div>
<p><a href="https://leetcode.com/problems/merge-sorted-array/">Merge Sorted Arrays</a></p>AlbionaHoti88. Merge Sorted ArrayLargest Sum Contiguous Subarray2019-12-18T19:13:00+00:002019-12-18T19:13:00+00:00http://codergals.github.io/largest-sum-contiguous-subarray<h2 id="largest-sum-contiguous-subarray">Largest Sum Contiguous Subarray</h2>
<p>We are going to have a series of articles on LeetCode problems, everyday a post on a problem on LeetCode.
The first post will tacke an Array problem, which is: </p>
<p><a href="https://leetcode.com/problems/maximum-subarray/">Maximum SubArray</a></p>
<h3 id="description">Description</h3>
<p>Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.</p>
<p>Example:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
Input: [-2,1,-3,4,-1,2,1,-5,4],
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.
</code></pre></div></div>
<p>Follow up:</p>
<p> If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
You will probably have experienced solving different competitive programming
tasks related to contigous subarrays.
Well, I myself when I first encountered the Maximum Sum contigous array challenge
in LeetCode, I had no idea that a Kadane's algorithm was existing first of all.
I searched on google "maxsubarray leetcode 100% javascript" and one of
the result links was: </p>
<p><a href="https://www.geeksforgeeks.org/largest-sum-contiguous-subarray/">largest-sum-contiguous-subarray</a></p>
<p>Found out that there is an Algorithm and it's called Kadan's Algo, using
the dynamic programming paradigm to find the Maximum Sub Array.</p>
<h3 id="below-you-will-find-the-short-cut-to-the-largest-sum-contiguous-subarray-solutions">Below you will find the short cut to the largest sum contiguous subarray solutions.</h3>
<p>First, we will solve the problem using the paradigm Dynamic Programming and then we continue using the divide and conquer approach.</p>
<p>The Algorithmic Paradigm is Dynamic Programming and the Time Complexity is O(n)</p>
<h3 id="dynamic-programming">Dynamic Programming</h3>
<p><a href="https://www.geeksforgeeks.org/dynamic-programming/">Dynamic Programming</a> is mainly an optimization over plain recursion. Wherever we see a recursive solution that has repeated calls for same inputs, we can optimize it using Dynamic Programming.</p>
<p>We will write a pseudo code, allowing ourselves to represent the implementation of the algorithm we are going to use, the Kadan’s Algorithm. After the pseudo code, we will continue to add the real code of the algorithm which we will run it in the LeetCode Idle.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Initialize:
max_so_far = 0
curr_max = 0
Loop for each element of the array
(a) max_so_far = array[0]
(b) curr_max = array[0]
(c) for each element of the array
curr_max = max of element and sum of curr_max and element
max_so_far = max of max_so_far and curr_max
return max_so_far
</code></pre></div></div>
<p>The solution with Dynamic Programming</p>
<figure class="highlight"><pre><code class="language-js" data-lang="js">
<span class="kd">const</span> <span class="nx">maxSubArray</span> <span class="o">=</span> <span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="o">=></span> <span class="p">{</span>
<span class="kd">let</span> <span class="nx">max_so_far</span> <span class="o">=</span> <span class="nx">nums</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<span class="kd">let</span> <span class="nx">curr_max</span> <span class="o">=</span> <span class="nx">nums</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">curr_max</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span> <span class="nx">curr_max</span> <span class="o">+</span> <span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span>
<span class="nx">max_so_far</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="nx">max_so_far</span><span class="p">,</span> <span class="nx">curr_max</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">max_so_far</span><span class="p">;</span>
<span class="p">};</span></code></pre></figure>
<p>
Divide and Conquer Approach
</p>
<figure class="highlight"><pre><code class="language-js" data-lang="js">
<span class="kd">var</span> <span class="nx">maxSubArray</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">nums</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// Return the results of the recursive function</span>
<span class="k">return</span> <span class="nx">findMaxSumInArr</span><span class="p">(</span><span class="nx">nums</span><span class="p">);</span>
<span class="c1">// Recursive function that will divide and conquer to find the maximum sum from a subarray of the array provided as a parameter</span>
<span class="kd">function</span> <span class="nx">findMaxSumInArr</span><span class="p">(</span><span class="nx">arr</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// BASE CASES: </span>
<span class="c1">// if there is only one arr item, then you can simply return that value</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">arr</span><span class="p">.</span><span class="nx">length</span> <span class="o">===</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">arr</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<span class="p">}</span>
<span class="cm">/*
if there isn't an arr item, then return -Infinity
(we need a valid number for the calculations below.
Since JS can only store numbers > -Infinity, -Infinity will never be the max) */</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">arr</span><span class="p">.</span><span class="nx">length</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="o">-</span><span class="kc">Infinity</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// Declare zero-indexed length and midpoint</span>
<span class="kd">let</span> <span class="nx">length</span> <span class="o">=</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
<span class="kd">let</span> <span class="nx">mid</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nx">length</span> <span class="o">/</span> <span class="mi">2</span><span class="p">);</span>
<span class="c1">// DIVIDE: Recursively find max sum in the left and right sub arrays</span>
<span class="kd">let</span> <span class="nx">lMaxSumInSubArr</span> <span class="o">=</span> <span class="nx">findMaxSumInArr</span><span class="p">(</span><span class="nx">arr</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nx">mid</span><span class="p">));</span>
<span class="kd">let</span> <span class="nx">rMaxSumInSubArr</span> <span class="o">=</span> <span class="nx">findMaxSumInArr</span><span class="p">(</span><span class="nx">arr</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="nx">mid</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="nx">length</span> <span class="o">+</span> <span class="mi">1</span><span class="p">));</span>
<span class="cm">/*
MERGE: The divide step gave use the max sum on the left and right side,
but we still need to account for the possibility of a contiguous
array that goes from left to right through the midpoint
*/</span>
<span class="c1">// Declare variables to record the maximum contiguous sums for each side</span>
<span class="kd">let</span> <span class="nx">lMaxContiguousSum</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">rMaxContiguousSum</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="c1">// On the left side, find sum of contiguous array and keep an updated record </span>
<span class="c1">// of the maximum</span>
<span class="cm">/*
(NOTE: in order to account for contiguous arrays that traverse the midpoint,
start the search from the midpoint - 1 index and traverse leftwards
towards index 0. This directionality guarantees that a contiguous array
traversing the midpoint will be able to add the midpoint itself and the
right side's contiguous arr [this is exactly what is checked in the
final return statement below])
*/</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">mid</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="nx">currContiguousSum</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span><span class="o">--</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">currContiguousSum</span> <span class="o">+=</span> <span class="nx">arr</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="nx">lMaxContiguousSum</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="nx">lMaxContiguousSum</span><span class="p">,</span> <span class="nx">currContiguousSum</span><span class="p">);</span>
<span class="p">}</span>
<span class="c1">// On the left side, find sum of contiguous array and keep an updated </span>
<span class="c1">// record of the maximum</span>
<span class="cm">/*
(NOTE: in accordance with the last note, to account for sub arrays
that traverse the midpoint, start the search from the midpoint + 1
index and traverse rightwards
*/</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">mid</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="nx">currContiguousSum</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><=</span> <span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">currContiguousSum</span> <span class="o">+=</span> <span class="nx">arr</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="nx">rMaxContiguousSum</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="nx">rMaxContiguousSum</span><span class="p">,</span> <span class="nx">currContiguousSum</span><span class="p">);</span>
<span class="p">}</span>
<span class="cm">/*
RETURN the max sum from the current array: either from the left side,
right side, or a contiguous sub arrary traversing from left to
right through the midpoint
*/</span>
<span class="k">return</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span>
<span class="c1">// The maximum sum from a contiguous subarray that traverses the midpoint</span>
<span class="nx">lMaxContiguousSum</span> <span class="o">+</span> <span class="nx">arr</span><span class="p">[</span><span class="nx">mid</span><span class="p">]</span> <span class="o">+</span> <span class="nx">rMaxContiguousSum</span><span class="p">,</span>
<span class="c1">// The max sum from each side (whether it was a single value or a contiguous sum) </span>
<span class="nx">lMaxSumInSubArr</span><span class="p">,</span>
<span class="nx">rMaxSumInSubArr</span>
<span class="p">);</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="kd">var</span> <span class="nx">nums</span> <span class="o">=</span> <span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">5</span><span class="p">,</span> <span class="mi">4</span><span class="p">];</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">maxSubArray</span><span class="p">([</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">5</span><span class="p">,</span> <span class="mi">4</span><span class="p">]));</span></code></pre></figure>AlbionaHotiLargest Sum Contiguous SubarrayRemembrance Day Hackathon2019-11-10T15:23:00+00:002019-11-10T15:23:00+00:00http://codergals.github.io/Remembrance-day-hackathon<h5 id="11th-of-november-is-the-remembrance-day">11th of November is the Remembrance Day.</h5>
<p>
Daniel Pocock was attending this year conference SFK in Kosovo, he had the chance to lean about <a href="https://www.getmural.io/">Mural</a> and he wrote a blog about it,
<a href="https://danielpocock.com/lombard-doubs-crash-mural/">Lombard doubs crash mural</a> We planned to organize a hackathon for the Remembrance Day in Prishtina. This hackathon is a special event open to both programmers and non-programmers. We welcome participants with experience of history, geography, media/journalism, experience working with spreadsheets and databases or experience writing small scripts and programs. We are exploring ways to use technology to recognize and memorialise the sacrifices made both by Kosovans and in the armed forces of our international friends. They gave their lives for our freedom today, we invite you to spend a weekend to help explore their stories. The skills and tools we are using are transferable into your own professional projects, whether it involves programming, data analysis skills, multi-media journalism or social media publicity.
<p>
<div class="side-by-side">
<img class="image" src="/assets/images/remembrance_day_hackathon/hackathon.jpg" alt="Alt Text" />
<figcaption class="caption">Remembrance Day Hackathon</figcaption>
</div>
<p>
Why come?
learn new skills by doing a practical task
non-profit event: you retain intellectual property rights in your work, sharing it under the GPL or Creative Commons license
access to experienced mentors and networking opportunities
complete a highly meaningful project that will gain international recognition
</br>
</p>
Supporters
- <a href="https://ickosovo.com/">Innovation Center Kosovo</a>
- <a href="https://codergals.github.io/">CoderGals</a>
</p></p>AlbionaHoti11th of November is the Remembrance Day.React Admin Dashboard2018-11-01T00:00:00+00:002018-11-01T00:00:00+00:00http://codergals.github.io/react-Admin-Dashboard<p>Example of project - <a href=""/assets/images/projects/reactAdmin.png"">Demo</a>.
Admin Dashboard build with ReactJs and React Semantic UI. Which enables jump starting a new project with a prepared layout and React Semantic UI provides access to many useful components.
—</p>
<p>What has inside?</p>
<ul>
<li>React</li>
<li><a href="https://react.semantic-ui.com/">Semantic UI Framework</a></li>
<li><a href="https://jestjs.io/">JestJs</a></li>
<li><a href="https://storybook.js.org/">Storybook</a></li>
<li><a href="https://redux.js.org/">ReduxJs</a></li>
</ul>
<hr />
<p><a href="https://albionahoti.github.io/react_admin_dashboard/">Check it out</a> here.
If you need some help, just <a href="https://github.com/AlbionaHoti/react_admin_dashboard/issues">tell me</a>.</p>AlbionaHotiExample of project - Demo. Admin Dashboard build with ReactJs and React Semantic UI. Which enables jump starting a new project with a prepared layout and React Semantic UI provides access to many useful components. —Coder Gals Hackathon2017-08-18T00:00:00+00:002017-08-18T00:00:00+00:00http://codergals.github.io/codergals-post<p>Coding is the alphabet of 21st century. It is the way we think and we write. This weekend the historical city of Prizren hosted its very first hackathon CoderGals with the intention of gathering girls from around Kosovo to work on open source projects and to contribute for an open society.</p>
<p>The event is the first that is supported from the <a href="debian.org/"><strong><em>Debian OS</em></strong></a> and the first of it’s kind to start the Debian OS series of meetings in Kosovo.</p>
<h3 id="organizers">Organizers</h3>
<p>Qendresa and Albiona</p>
<div class="side-by-side">
<div class="toright">
<img class="image" src="http://codergals.github.io/assets/images/prizrencity.jpg" alt="Alt Text" />
<figcaption class="caption">Prizren, city of Dokufest</figcaption>
</div>
</div>
<h5 id="the-48h-hackathon-created-many-networks-of-people-and-engaged-them-on-different-projects">The 48h hackathon created many networks of people and engaged them on different projects.</h5>
<div class="side-by-side">
<div class="toright">
<img class="image" src="http://codergals.github.io/assets/images/groups.jpg" alt="Alt Text" />
<figcaption class="caption">Groups working on their projects</figcaption>
</div>
</div>
<h2 id="codergals-the-way-we-construct-minds">CoderGals, the way we construct minds</h2>
<h5 id="codergals-is-the-first-hackathon-of-its-kind-and-the-only-held-in-prizren-i-and-my-sister-qendresa-with-the-intention-of-popularizing-the-computer-programming-organized-the-two-day-hackathon-which-gathered-26-girls-from-around-kosovo-participants-worked-on-groups-of-five-contributing-to-existing-open-source-projects-and-started-projects-from-scratch-there-was-a-variety-of-projects-targeting-mobile-devices-web-technologies-and-online-communication-technologies">CoderGals is the first hackathon of its kind and the only held in Prizren. I and my sister Qendresa with the intention of popularizing the computer programming organized the two day hackathon which gathered 26 girls from around Kosovo. Participants worked on groups of five contributing to existing open source projects and started projects from scratch. There was a variety of projects targeting mobile devices, web technologies, and online communication technologies.</h5>
<div class="side-by-side">
<div class="toleft">
<p></p>
</div>
<div class="toright">
<img class="image" src="http://codergals.github.io/assets/images/qendresa.jpg" alt="Alt Text" />
<figcaption class="caption">Qendresa welcoming the participants</figcaption>
</div>
</div>
<div class="side-by-side">
<div class="toright">
<img class="image" src="http://codergals.github.io/assets/images/fellowship.jpg" alt="Alt Text" />
<figcaption class="caption">“The fellowship” of the Mentors</figcaption>
</div>
<div class="toleft">
<p></p>
</div>
</div>
<div class="side-by-side">
<div class="toleft">
<p></p>
</div>
<div class="toright">
<img class="image" src="http://codergals.github.io/assets/images/mentoring.jpg" alt="Alt Text" />
<figcaption class="caption">The mentoring…</figcaption>
</div>
</div>
<div class="side-by-side">
<div class="toright">
<img class="image" src="http://codergals.github.io/assets/images/daniel.jpg" alt="Alt Text" />
<figcaption class="caption">Daniel Pocock, our guest from Debian observing the teams and their progress</figcaption>
</div>
<div class="toleft">
<p></p>
</div>
</div>
<div class="side-by-side">
<div class="toleft">
<p></p>
</div>
<div class="toright">
<img class="image" src="http://codergals.github.io/assets/images/brainstorming.jpg" alt="Alt Text" />
<figcaption class="caption">2 participants brainstorming</figcaption>
</div>
</div>
<div class="side-by-side">
<div class="toright">
<img class="image" src="http://codergals.github.io/assets/images/cinema.jpg" alt="Alt Text" />
<figcaption class="caption">4 CoderGals enjoying the cinema ambient</figcaption>
</div>
<div class="toleft">
<p></p>
</div>
</div>
<h2 id="projects">Projects</h2>
<h3 id="androidgals">AndroidGals</h3>
<h5 id="worked-on-solving-issues-and-improving-the-vanilla-music-an-android-audio-player">Worked on solving issues and improving the Vanilla music, an android audio player.</h5>
<div class="side-by-side">
<div class="toright">
<img class="image" src="http://codergals.github.io/assets/images/AndroidGals.jpg" alt="Alt Text" />
<figcaption class="caption">Android Gals</figcaption>
</div>
<div class="toleft">
<p></p>
</div>
</div>
<h3 id="spider-gals">Spider Gals</h3>
<h5 id="scraping-fx-exchange-rates-from-public-web-sites-sending-on-an-amqp-topic-or-into-database">Scraping FX exchange rates from public web sites, sending on an AMQP topic or into Database.</h5>
<div class="side-by-side">
<div class="toright">
<img class="image" src="http://codergals.github.io/assets/images/SpiderGals.jpg" alt="Alt Text" />
<figcaption class="caption">Spider Gals</figcaption>
</div>
<div class="toleft">
<p></p>
</div>
</div>
<h3 id="ars-team">ARS team</h3>
<h5 id="created-a-plugin-for-jscommunicator-using-laravel-framework">Created a plugin for JSCommunicator using Laravel framework.</h5>
<div class="side-by-side">
<div class="toright">
<img class="image" src="http://codergals.github.io/assets/images/ARSTeam.jpg" alt="Alt Text" />
<figcaption class="caption">ARSTeam Gals</figcaption>
</div>
<div class="toleft">
<p></p>
</div>
</div>
<h3 id="worrkat">WORRKAT</h3>
<h5 id="using-pyqt-to-make-a-window-that-appears-when-somebody-clicks-a-tel-uri-and-simulates-a-phone-client">Using PyQt to make a window that appears when somebody clicks a “tel:” URI and simulates a phone client.</h5>
<div class="side-by-side">
<div class="toright">
<img class="image" src="http://codergals.github.io/assets/images/worrkat.jpg" alt="Alt Text" />
<figcaption class="caption">WORRKAT Gals</figcaption>
</div>
<div class="toleft">
<p></p>
</div>
</div>
<h3 id="code-breakers">Code breakers</h3>
<h5 id="created-a-wordpress-plugin-for-jscommunicator">Created a wordpress plugin for JSCommunicator.</h5>
<div class="side-by-side">
<div class="toright">
<img class="image" src="http://codergals.github.io/assets/images/codeBreakers.jpg" alt="Alt Text" />
<figcaption class="caption">Code Breaker member watch a tutorial on how to make a wordpress plugin</figcaption>
</div>
<div class="toleft">
<p></p>
</div>
</div>
<h3 id="we-would-like-to-thank-all-participants-mentors-and-sponsors-for-making-it-happen">We would like to thank all participants, mentors and sponsors for making it happen.</h3>
<h3 id="sponsors">Sponsors</h3>
<p>The event was sponsored from the <a href="https://xk.usembassy.gov/">US Embassy in Kosovo</a>, <a href="https://gjirafa50.com/">Gjirafa50</a>, <a href="https://www.debian.org/">Debian OS</a>, <a href="https://www.ipko.com/">Ipko</a>, <a href="https://www.ccwa.org/">Cleveland Conuncil of World Affairs</a></p>
<p>See you soon…</p>
<div class="side-by-side">
<img class="image" src="http://codergals.github.io/assets/images/crew.jpg" alt="Alt Text" />
<figcaption class="caption">CoderGals crew</figcaption>
</div>AlbionaHotiCoding is the alphabet of 21st century. It is the way we think and we write. This weekend the historical city of Prizren hosted its very first hackathon CoderGals with the intention of gathering girls from around Kosovo to work on open source projects and to contribute for an open society.