Planet dgplug

January 15, 2017

Kushal Das

Setting up a retro gaming console at home

Commodore 64 was the first computer I ever saw in 1989. Twice in a year I used to visit my grandparents’ house in Kolkata, I used to get one or two hours to play with it. I remember, after a few years how I tried to read a book on Basic, with the help of an English-to-Bengali dictionary. In 1993, my mother went for a year-long course for her job. I somehow managed to convince my father to buy me an Indian clone of NES (Little Master) in the same year. That was also a life event for me. I had only one game cartridge, only after 1996 the Chinese NES clones entered our village market.

Bringing back the fun

During 2014, I noticed how people were using Raspberry Pi(s) as NES consoles. I decided to configure my own on a Pi2. Last night, I re-installed the system.

Introducing RetroPie

RetroPie turns your Raspberry Pi into a retro-gaming console. You can either download the pre-installed image from the site, or you can install it on top of the rasbian-lite. I followed the latter path.

As a first step I downloaded Raspbian Lite. It was around 200MB in size.

# dcfldd bs=4M if=2017-01-11-raspbian-jessie-lite.img of=/dev/mmcblk0

I have used the dcfldd command, you can use dd command too. Detailed instructions are here.

After booting up the newly installed Raspberry Pi, I just followed the manual installation instructions from the RetroPie wiki. I chose basic install option on the top of the main installation screen. Note that the screenshot in the wiki is old. It took a few hours for the installation to finish. I have USB gamepads bought from Amazon, which got configured on the first boot screen. For the full instruction set, read the wiki page.

Happy retro gaming everyone :)

by Kushal Das at January 15, 2017 06:17 AM

January 14, 2017

Kushal Das

Updates from PyCon Pune, 12th January

This is a small post about PyCon Pune 2017. We had our weekly volunteers meet on 12th January in the hackerspace. You can view all the open items in the GitHub issue tracker. I am writing down the major updates below:

Registration

We have already reached the ideal number of registrations for the conference. The registration will be closed tomorrow, 15th of January. This will help us to know the exact number of people attending, thus enabling us to provide the better facility.

Hotel and travel updates

All international speakers booked their tickets, the visa application process is going on.

Child care

Nisha made a contact with the Angels paradise academy for providing childcare.

T-shirts for the conference

T-shirts will be ordered by coming Tuesday. We want to have a final look at the material from a different vendor on this Sunday.

Speakers’ dinner

Anwesha is working on identifying the possible places.

Food for the conference

Nisha and Siddhesh identified Rajdhani as a possible vendor. They also tried out the Elite Meal box, and it was sufficient for one person. By providing box lunches, it will be faster and easier to manage the long lunch queues.

Big TODO items

  • Design of the badge.
  • Detailed instruction for the devsprint attendees.

Next meeting time

From now on we will be having two volunteers meet every week. The next meet is tomorrow 3pm, at the hackerspace. The address is reserved-bit, 337, Amanora Chambers (Above Amanora Mall), Hadapsar, Pune.

by Kushal Das at January 14, 2017 05:02 AM

January 11, 2017

Jaysinh Shukla

Python Express

What is Python Express?

PythonExpress is moment initiated by PSSI. is online tool which helps colleges to schedule Python workshop to their college. The tool is prepred by Python Software Society of India.

The moment initiated by PSSI with a tag Python month. The Python month was celebrated before one month of the Pycon India. During this year, member of community spare little time and reaches near by colleges for conducting python workshops. Purpose of this event is to encourage students to join PyCon India.

Early Activities

January 11, 2017 12:00 AM

2016 Other Python Activities

Mentor

Django girls Ahmedabad

I volunteered for Django girls Ahmedabad. The Django girls is popular community of Django whos vision is to womens empowerment. This event happened happend at CIIE, IIM Ahmedabad. There were quit a good number of participats.

Organizer

PyKutchchh

I organized one day Python Conference at Bhuj named [PyKutch][pykutch]. The purpose of this conference was to briefning students with the power of Python programming language and appeal University chancelar to include Python as first language. We managed to arrange small fund to provide snacks and tea for the attendees. This was collobrated efforts from Dhavan Vaidya, Chetan Khatri and Devji Chhanga.

I was jury at DAIICT hackthon IEEE.

Volunteer

PyCon India

I volunteered Devsprint section of [PyCon India 2016][pycon_india_2016]. From inviting people for submitting praposals to thanking them for attending Devsprints did by our Devsprint team. Thanks to [PyDelhi community] [pydelhi_community] I performed the keyrole in arranging Devsprints. Volunteering for such a big conference gives lot of experience. I appriciate the hardwork done by all the other volunteers with me.

Conferences

[PyDelhi Conf][pydelhi_conf] ———————————————–

The conference was targetting local crowd but I was unable to restrict myself from attending this. It happend at JNU, New Delhi. The event was organized by PyDelhi community. I got chance to meet many interesting people during this event.

January 11, 2017 12:00 AM

December 28, 2016

Shakthi Kannan

GNU Emacs - Calendar, Macros and Drawing

[Published in Open Source For You (OSFY) magazine, March 2016 edition.]

In this next article in the GNU Emacs series, you will learn how to use its calendar, center text, macros and drawing tools.

Calendar

You can use and display a calendar inside GNU Emacs using the following command (also see figure below):

M-x calendar
Calendar

Day

You can move forward by a day using the C-f shortcut, and move back a day using the C-b keys. You can move to the current date using the ’.’ key.

To start the week on a Monday, set the following in your ~/.emacs.

(setq calendar-week-start-day 1)

Week

If you wish to move forward by a week, you can use the C-n shortcut, and to move back by a week, use the C-p shortcut. The C-a shortcut can be used to move to the beginning of the week, while the C-e shortcut can be used to move to the end of the week.

Month

You can move to the beginning of a month using the M-a shortcut. To move to the end of the month, use M-e.

You can move forward and backward a month using the M-} and M-{ shortcuts, respectively.

If you wish to scroll forward three months, use the C-v shortcut. To scroll backward three months, use the M-v shortcut.

Year

In order to move forward a year, you can use the C-x ] shortcut, and to move back a year, you can use the C-x [ shortcut.

You can go to a specified date using the g d key combination. It will then prompt you with the messages “Year (>0):”, “Month name:” and “Day (1-31):”, and will take you to the specified date.

You can move to the beginning of the year using the M-< shortcut, and to the end of the year using the M-v shortcut.

You are encouraged to read the ‘Calendar’ section in the GNU Emacs manual at https://www.gnu.org/software/emacs/manual/html_node/emacs/Calendar_002fDiary.html#Calendar_002fDiary, to learn more.

Centering

Consider the following poem that I wrote in 2015:

Poem

Project issues in the way, 
In the way, in the way. 
Project issues in the way, 
My fair user. 

Fixing bugs right way, 
Right away, right away. 
Fixing bugs right way, 
My fair user. 

Merging pull requests as I say, 
As I say, as I say. 
Merging pull requests as I say, 
My fair user. 

All the tests are passing, hey! 
Passing, hey! Passing, hey! 
All the tests are passing, hey! 
My fair user. 

As a client, you should pay, 
You should pay, you should pay. 
As a client, you should pay, 
My fair user. 

Python really saved the day, 
Saved the day, saved the day. 
Python really saved the day, 
My fair user.

You can center the title “Poem” by placing the cursor on it, and typing “M-x set-justification-center”.

Marking and highlighting the poem, and using M-x center-region will center the poem. The output is shown below:

         Poem

Project issues in the way, 
 In the way, in the way. 
Project issues in the way, 
      My fair user. 

 Fixing bugs right way, 
Right away, right away. 
 Fixing bugs right way, 
     My fair user. 

Merging pull requests as I say, 
      As I say, as I say. 
Merging pull requests as I say, 
         My fair user. 

All the tests are passing, hey! 
  Passing, hey! Passing, hey! 
All the tests are passing, hey! 
         My fair user. 

  As a client, you should pay, 
You should pay, you should pay. 
  As a client, you should pay, 
         My fair user. 

 Python really saved the day, 
Saved the day, saved the day. 
 Python really saved the day, 
        My fair user. 

Macros

Macros are recorded key strokes that can be stored and replayed. You can start defining a keyboard macro using C-x ( command or the F3 key. You can then type a series of keys that constitute the macro. To finish defining the macro, you can use C-x ) or the F4 key. In order to execute the previous defined macro, you can use C-x e shortcut or F4.

Consider the following text in a buffer that contains a serial number, date and an examination subject list:

1,2015-03-02,English
2,2015-03-03,Physics
3,2015-03-05,Mathematics
4,2015-03-08,Biology
5,2015-03-10,Chemistry

Suppose you wish to add a space after each comma, you can define the following macro (exclude the semi-colon followed by the text) for the first line using the following key strokes:

F3    ; Start macro definition
C-s   ; Search for
,     ;   comma
Enter ;
Space ;
C-s   ; Search again for
,     ;   comma
Enter ;
Space ;
C-n   ; Move to next line
C-a   ; Move to beginning of line
F4    ; End macro definition

Using C-x e or F4 repeatedly will turn the above input CSV text into the following:

1, 2015-03-02, English
2, 2015-03-03, Physics
3, 2015-03-05, Mathematics
4, 2015-03-08, Biology
5, 2015-03-10, Chemistry

You can give a name (say, ‘comma’) to the previously defined macro using C-x C-k n. You can then execute the macro using M-x comma. You can also insert the named macro into a file using M-x insert-kbd-macro command. You can bind a macro to a key using C-x C-k b shortcut.

If you wish to apply the macro to each line in a region, you can use C-x C-k r keys. In order to cycle between the previous and next macros in the macro ring, you can use C-x C-k C-p and C-x C-k C-n shortcuts respectively. You can also delete a macro using C-x C-k C-d key combination.

Picture mode

You can draw diagrams inside Emacs using Picture mode. To start Picture mode, use M-x picture-mode command, and to exit use the C-c C-c shortcut.

The cursor movement keys in a buffer are also applicable in picture mode. To move the cursor right, you can use the C-f keys, and to move left by one character, you can use the C-b shortcut. To move the cursor up and down by one character, use the C-p and C-n shortcuts, respectively. The C-d shortcut is used to delete a character.

Before you move the cursor to draw in the buffer, you need to set the drawing direction. The following table summarizes the shortcut keys, and their associated drawing direction.

Shortcut Direction
C-c ^ Up
C-c . Down
C-c > Right
C-c < Left
C-c ` Northwest
C-c ’ Northeast
C-c / Southwest
C-c
Southeast

If you want to move the cursor forward in the drawing direction, you can use the C-c C-f shortcut. To move the cursor backward, use the C-c C-b key combination. If you want to delete a line, use the C-k command. You can insert a new line using the C-o shortcut. You can also draw a rectangle around a region using the C-c C-r shortcut. A drawing done using Picture mode is shown in Figure 2.

Diagram using Picture mode

Artist mode

Artist mode can also be used to draw diagrams in GNU Emacs. You can enter this mode using M-x artist-mode, and exit the same using C-c C-c.

You can draw pictures using the keyboard alone or also use the mouse in Artist mode. In order to start and stop drawing, use the Enter key. This is equivalent to putting the pen down when drawing, and lifting it up when you want to perform a different action.

The buffer navigation commands to move right and left are the same as C-f and C-b shortcuts respectively. You can move up a column using the C-p shortcut, and move down a column using the C-n key.

You can draw geometric shapes using Artist mode. To select a shape or operation you can use C-c C-a C-o key combination. This will provide a list of shapes and actions you can perform. This list is shown in Figure 3:

Artist mode operations

The shortcuts listed in the following table are available for drawing specific shapes:

Shortcut Shape
C-c C-a e Ellipse
C-c c-a p Polylines
C-c C-a r Rectangles
C-c C-a l Lines

Figure 4 depicts an ellipse drawn using Artist mode:

Ellipse

Figure 5 is an example of polylines:

Polylines

You can fill a shape using C-c C-a f key combination. The following Figure 6 shows a circular representation filled with dots.

Circle fill

You can also spray characters in the buffer using the C-c C-a S shortcut keys. An example is shown in Figure 7:

Spray

The character to be used for drawing can be changed using C-c C-a C-l shortcut. The character to fill shapes can be set using C-c C-a C-f key combination.

If you want to cut an area, you can draw a rectangle around it using C-c C-a C-k key combination. You can also copy the image area using the C-c C-a M-w keys, and paste the same using C-c C-a C-y or C-x r y shortcuts. To set the operation to erase text, you can use C-c C-a C-d key combination.

You can refer to the Emacs Wiki Artist mode for more documentation and help - http://www.emacswiki.org/emacs/ArtistMode.

December 28, 2016 04:30 PM

December 20, 2016

Anwesha Das

Making their ways: PyLadies Pune

July, 2017 PyLadies Pune came out of hibernation and rebooted its journey. Let me tell you honestly it has been quite a roller coaster ride since then. We faced a lot of problems but among them the biggest one was lack of participation by women. For the first month the male female ratio for the meetup was 60% - 40%. I, as an organizer, thought as it is the first meet up women did not show up much. But the ratio of women decreased in the next meet up almost by 30%. I was worried. Where were we going wrong?
Was the content for the meetup not good enough? Or something else? We focused on this “something else”.

Publicity:

People actually didn't know about PyLadies Pune. We started addressing this problem by going to several colleges, IT companies, conferences. This significantly increased the number of of new members joining PyLadies Pune and attending events.

Inspire each other

One thing we were very sure about from the beginning was that it would inspire people to see others learning something new, getting better opportunities (getting better jobs may be). Actually getting better in any way after coming to this meetup. Yes, this aspect is working, with new participants in turn inspiring others to come along.

The big one: Social media

Honestly I am having a hard time getting attendees to appreciate just how important or big social media is these days. Every meet up I allot at least 5 minutes of time to asking them "Please blog, tweet. it's important” And explain them why is it so. In our very 2nd meet up we had a session on Communication skills.
But I realized that only asking attendees to blog will not work. Something should be there which will give the blogs more visibility, and reach a bigger audience. When the number of readers increases and they get good comments, post authors may feel maintaining their blog is a good use of their time. So we created our own Planet PyLadies Pune.

Boost confidence

Boosting the confidence of the participants is a major goal for us. We keep lightning talks session in our meetups. In this session girls talk about their work in Python. It gives them a chance to speak in public. As they are talking in front of their friends, it becomes easier for them to talk.

November meetup of PyLadies Pune

The meet up was scheduled after a long diwali vacation on 13th of November, 2016. I reached out early and made all the arrangements required for the meet up. Py was there with me for the meet up. These days even she likes the PyLadies meetups, as this gives her a chance to play all day while Mommy is busy coding.

It was 10:45AM, I freaked out, as my speaker for the day, Sayan, had not yet shown up, and his phone was not working. But to my great relief he came there at 11 PM, bang on time.

Suddenly I noticed something that brought a big smile on my face. There were 12 women present at the meet up. More women than men. Along with our regular participants (more or less 8 women), there were a good number of new faces.

I settled down, Sayan was about to take his session.

If someone intends to work offline, contribute in the open source or in collaborative manner, she must know about git. I got to know about the importance of git, as I was submitting patches. I learned few commands of git. It seemed quite difficult for me. And when I was stuck with an issue, my in house help, husband dear, could not solve it and referred me to Sayan. He made it so clear and easy. Then I thought, “Why not ask him to lead a session on git for PyLadies?” And he readily agreed.

Sayan started his session. He started it with explaining ”What is git?”, “Why is it important?”, and then moved on to terms like : patch, merge, PR(Pull Request) etc. Then he slowly moved into more details and basic commands of git like:

git init
git config --global user.name “username”
git config --global user.email “userEmail”
git add
git commit -m "Commit message"
git push origin master
git status
git remote add origin
git checkout -b
git fetch origin

It was a very nice and useful session for us. With a little bit of disturbance caused by Py, I could attend the whole session.

After lunch Nisha took her session on creating our own Map using GeoJSON. She gave the this talk at FudCon this year. So we wanted her to give it for all those PyLadies who could not attend the conference. She talked about “What is spatial data?”. She explained that we can convert the data (which is generally in the CSV format), and represent it as geoJSON. She had used Python for converting the file format to geoJSON. The next step is to upload converted file to github, have a look at it, and use JavaScript for the actual map rendering. She had also showed us a cool example of a CV using this.

December PyLadies meetup

Our December meetup witnessed the similar trend as the November meetup, more number of female participants than men. For this meet up, we planned to have a Python 101 session. Trishna was suppose to take the session. But she could not join as she had to stand in the queue in the bank for getting some cash (the demonetization effect). So Kushal took the session. It was a very useful session, specially for the new people in our group, we could revise our Python skills.

Then it was time for a photograph. The photograph of a group, where women are the majority, and yes we do code in Python.

by Anwesha Das at December 20, 2016 04:57 AM

December 09, 2016

Trishna Guha

Talking to Docker daemon of Fedora Atomic Host

This post will describe how to use Docker daemon of Fedora Atomic host remotely.  Note that we are also going to secure the Docker daemon since we are connecting via Network which we will be doing with TLS.

TLS (Transport Layer Security) provides communication security over computer network. We will create client cert and server cert to secure our Docker daemon. OpenSSL will be used to to create the cert keys for establishing TLS connection.

I am using Fedora Atomic host as remote and workstation as my present host.

Thanks to Chris Houseknecht for writing an Ansible role which creates all the certs required automatically, so that there is no need to issue openssl commands manually. Here is the Ansible role repository: https://github.com/ansible/role-secure-docker-daemon. Clone it to your present working host.

$ mkdir secure-docker-daemon
$ cd secure-docker-daemon
$ git clone https://github.com/ansible/role-secure-docker-daemon.git
$ touch ansible.cfg inventory secure-docker-daemon.yml
$ ls 
ansible.cfg  inventory  role-secure-docker-daemon  secure-docker-daemon.yml

$ vim ansible.cfg
[defaults]
inventory=inventory
remote_user='USER_OF_ATOMIC_HOST'

$ vim inventory 
[serveratomic]
'IP_OF_ATOMIC_HOST' ansible_ssh_private_key_file='PRIVATE_KEY_FILE'

$ vim secure-docker-daemon.yml
---
- name: Secure Docker daemon for Atomic host
  hosts: serveratomic
  gather_facts: no
  become: yes
  roles:
    - role: role-secure-docker-daemon
      dds_host: 'IP_OF_ATOMIC_HOST'
      dds_server_cert_path: /etc/docker
      dds_restart_docker: no

Replace ‘USER_OF_ATOMIC_HOST’ with the user of your Atomic host, ‘IP_OF_ATOMIC_HOST’ with the IP of your Atomic host, ‘PRIVATE_KEY_FILE’ with the ssh private key file of your workstation.

Now we will run the ansible playbook. This will create client and server certs on the Atomic host.

$ ansible-playbook secure-docker-daemon.yml

Now ssh to your Atomic host.

We will copy the client certs created on the Atomic host to the workstation. You will find the client certs file in ~/.docker directory as root user. Now create ~/.docker directory on your workstation for regular user and copy the client certs there. You can use scp to copy the cert files from Atomic host to Workstation or do it manually😉.

We are going to append some Environment variables in the ~/.bashrc file of the workstation for regular user.

$ vim ~/.bashrc
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=~/.docker/
export DOCKER_HOST=tcp://IP_OF_ATOMIC_HOST:2376

Docker’s port is 2376 for TLS (secured port).

Now go your Atomic host. We will add tls options to docker command on atomic host.

Add –tlsverify –tlscacert=/etc/docker/ca.pem –tlscert=/etc/docker/server-cert.pem –tlskey=/etc/docker/server-key.pem -H=0.0.0.0:2376 -H=unix:///var/run/docker.sock in the /etc/sysconfig/docker file.

$ vi /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H=0.0.0.0:2376 -H=unix:///var/run/docker.sock'

We will need to reload and restart the docker daemon.

$ sudo systemctl docker-reload
$ sudo systemctl restart docker.service

Reboot both of your Atomic host and Workstation.

So now if you try running any docker command as regular user on your workstation it will talk to the docker daemon of the Atomic host and execute the command there. You do not need to manually ssh and issue docker command on your Atomic host🙂.

Here are some screenshots for demonstration:

Atomic Host:

screenshot-from-2016-12-09-10-27-47

screenshot-from-2016-12-09-10-29-46

screenshot-from-2016-12-09-10-26-31

Workstation:

fotoflexer_photo

screenshot-from-2016-12-09-10-26-35

 


by Trishna Guha at December 09, 2016 11:58 AM

December 07, 2016

Farhaan Bukhsh

Functional Programming 101

“Amazing!”  that was my initial reaction when I heard and read about functional programming , I am very new to the whole concept so I might go a little off while writing about it so I am open to criticism .  This is basically my understanding about functional programming and why I got hooked to it .

Functional Programming is a concept just like Object Oriented Programming , a lot of people confuse these concept and start relating to a particular language , thing that needs to be clear is languages are tools to implement concepts. There is imperative programming where you tell the machine what to do ? For example

  1. Assign x to y
  2. Open a file
  3. Read a file

While when we specifically talk about FP it is a way to tell how to do things ? The nearest example that I can come up with is SQL query  where you say something like

SELECT  * FROM Something where bang=something and bing=something

Here we didn’t tell what to do but we told how to do it. This is what I got as a gist of functional programming where we divide our task into various functional parts and then we tell how things have to be implemented on the data.

Some of the core concepts that I came across was pure functions and functions treated as first class citizen or first class object . What each term means  lets narrow it down .

Pure functions  is a function whose return value is determined by the input given, the best example of pure functions are Math functions for example Math.sqrt(x) will return the same value for same value of x. Keeping in mind that x will never be altered. Lets go on a tangent and see that how this immutability of x is a good thing, this actually prevents data from getting corrupt.  Okay! That is alot to take in one go, lets understand this with a simple borrowed example from the talk I attended.

We will take example of a simple Library System  now for every library system there should be a book store, the book store here is an immutable data structure now what will happen if I want to add a new book to it ? Since it is immutable I can’t modify it , correct ? So a simple solution to this problem is every time I add or remove a book I will actually deliver a new book store and this new book store will replace the old one. That way I can preserve the old data because hey we are creating a whole new store. This is probably the gist or pros of functional programming.

book_store = ["Da Vinci's Code", "Angles and Demons", "The Lost Symbol"]
def add_book( book_store, book):
    new_book_store = []
    map(lambda old_book: new_book_store.append(old_book), book_store)
    new_book_store.append(book)
    return new_book_store

print add_book(book_store, "Inferno") # ["Da Vinci's Code", "Angles and Demons", "The Lost Symbol", "Inferno"]

print book_store # ["Da Vinci's Code", "Angles and Demons", "The Lost Symbol"]

In the above code you can actually see that a new book store is returned on addition of a new book. This is what a pure function looks like.

Function as first class citizens , I can relate a lot to this because of python where we say that everything is a first class objects. So, basically when we say functions are first class citizen we are implying that functions can be assigned to a variable, passed as a parameter and returned from a function. This is way more powerful then it sounds this bring a lot modular behavior to the software you are writing, it makes the project more organized and less tightly coupled. Which is a good thing in case you want to make quick changes or even feature related big changes.

def find_odd(num):
    return num if(num%2 != 0) else None

def find_even(num):
    return num if(num%2 == 0) else None

def filter_function(number_list, function_filter):
    return [num for num in number_list if(function_filter(num) != None)]

number_list = [1,2,3,4,5,6,7,8,9]
print filter_function(number_list, find_odd) # [1,2,5,7,9]
print filter_function(number_list, find_even) # [2,4,6,8]

In the above code you can see that function is passed as an argument to another function.

I have not yet explored into lambda calculus which I am thinking of getting into . There is a lot more power and beauty in functional programming.  I want to keep this post a quick read so I might cover some code example later, but I really want to demonstrate this code.

def fact(n, acc=1):
    return acc if ( n==1 ) else fact(n-1, n*acc)

where acc=1  this is pure textbook and really beautiful code which calculates factorial of n ,  when it comes to FP it is said To iterate is Human, to recurse is Divine. I will leave you to think more about it, will try to keep writing about things I learn.

Happy Hacking!


by fardroid23 at December 07, 2016 09:07 AM

December 01, 2016

Anwesha Das

micro:bit : a round around the Sun

"The future of the world is in my classroom today"- Ivan W. Fitzwater. To shape the world we need to give the children the correct environment to learn new things. BBC micro:bit is such a project. It has been a year since micro:bit was launched in UK. This tiny device was launched with an aim to train young minds to think, create and of course code.

What is this fun-size piece?

micro:bit is an ARM powered embedded board. This cookie sized computer (4 × 5 cm) has two input buttons, 5*5 led lights, two microcontroller processors, with one allowing the device to work as a USB on a personal computer irrespective of the operating system . The bigger chip in the upper left of the device is the ARM Cortex- M0 processor with a 416 KiB of memory. For performing Physics experiments it has a digital compass, accelerometer. USB or external battery backup can be used for powering micro:bit. Other features like Bluetooth connectivity makes the device so cool.

From Python to MicroPython

MicroPython is Python for microcontrollers, other small sized and confined hardware. It is an implementation of Python 3, where it behaves like Python but does not use the CPython source code. It is written from the scratch. MicroPython comes with a useful subset of the Python standard library, and is published under the permissive MIT license.

Damien George : the man behind MicroPython

In 2013 Damien George started his project of shrinking the language Python. As it could run on small devices. He started MicroPython as a Kickstarter project. It took him almost 6 months of time to realize that it is a workable idea. Only after he had written Python compiler as thin as it could be compressed into a RAM of 128 kilobytes. This "Genuinely Nice Chap" was awarded the PSF's Community
Service Award
in March 2016.

The Era of Digital creativity:

“I never teach my pupils, I only attempt to provide the conditions in which they can learn.” Albert Einstein. For a long time, the BBC has been endeavoring to provide fyouth with good conditions to help
them learn, especially around technology. They started this mission with the launch of the BBC Micro, as series of microcomputers in the 1980's. The latest effort in that mission was the micro:bit project. The BBC started with the massive aspiration of giving these pocket size fun machines, micro:bit, to a million 11 and 12 year old children in the UK. An amazing aim indeed, motivating a generation to think,to visualize and to code. Children will be able to make their fantasies come true on this blank slate.

PSF joining the mission:

BBC found that Python is the good choice for micro:bit. Python is well known as a relatively easy language to learn, and is especially popular for
teaching children. The PSF is one of the key partners in this project, as the micro:bit is not only a fascinating education use case, but also illustrates Python's utility in an area not normally associated with
the language, embedded systems programming.
Whenever we think of an embedded device the ideas like 'low level programming', 'coding in the language C ' just pop in our minds. But that makes things difficult, needs expertise and is of course not very suitable for 11 or 12 year olds. Here MicroPython came to help. With MicroPython people can interact with the hardware in a lucid manner.

Nicholas Tollervey, our very own ntoll is the guy who was acting as the bridge between PSF and the project. It is majorly for his efforts, now MicroPython is running on micro:bit (followed by his much jumping and shouting of 'woo hoo'). The following is what the father of MU code editor, wants to say about his journey with micorbit.

What made you interested in the project?

I was relatively well known in UK Python circles as being interested in education (I created and organize the PyCon UK education track for
teachers and kids). A friend heard about the BBC's request for partners
in a programming-in-education project called "Make it Digital" and
suggested I take a look. The BBC's request for partners actually
mentioned Python! That was at the end of 2014.

When did you get involved with it?

I took the BBC's request for partners and, with the permission of the PSF board, put together a proposal for the PSF to
become a partner.

At this stage, all I knew was the project included programming and a mention of Python. Given this mention and Python's popularity as a
teaching language I felt it important that the Python community had the
opportunity to step up and get involved.

In January 2015 the BBC invited the PSF to join a partnership relating to the mysterious "Make it Digital" project. We had to sign NDA
agreements and it was only then that I learned of the plans for the BBC
micro:bit device.

How does this project helped/changed education system in UK?

Every 11-12 year old in the UK should have one in their possession by now. A huge number of resources have been made available, for free, for
teachers and learners to learn about programming. Lots of the partner
organisations have become involved in delivery of educational resources.

From a Python specific perspective, between 80-100 of the UK's Python developers have been involved in either writing code for kids, creating
tools for kids to use, turning up at teach-meets to work with teachers
and building cool educational projects for people to use in the classroom.

It's too early to tell what the impact has been. However, in ten years time I'll know it's been a success if I interview a new graduate
programmer and they say they got started with the micro:bit. :-)

How did PSF got involved with this project?

The partnership was between organisations. A rag-tag band of volunteers from the UK's Python community was not an option - ergo, my acting as a
PSF Fellow on behalf of the PSF.

This was actually quite useful since a large number of the volunteers got involved because they would be acting under the auspices of the PSF.
It's an obvious way to motivate people into giving something back to the
community - run it as a PSF project.

What was PSF's role/ how did PSF helped the project?

The original role of the PSF was to create educational resources, offer Python expertise and provide access to events such as PyCon UK through
which teachers could be reached. The BBC explained that another partner
was actually building the Python software for the device.

The complete story is told in this blog post:

http://ntoll.org/article/story-micropython-on-microbit

What are the changes that the project had brought?

Well, I believe it has brought the MicroPython project to the attention of many people in the education world and wider Python community. I also
believe it has brought educational efforts to the attention of programmers.

Education is important. It's how we decide what our community is to become through our interaction with our future colleagues, friends and
supporters.

micro:bit in PyCon UK 2016

This year's Pycon UK took place, from 15th to 19th September, 2016, in Cardiff. PSF as a part of its prime mission "to promote the programming language Python" sponsored Python conferences around the globe. "They are very generous sponsors", was what ntoll had to say about the
role of the PSF in PyCon UK.

To teach the students one has to educate the teachers. A lot of preparatory work had been done before actually distributing the micro:bits including the changes made in the CS curriculum of the students. About his plan in Pycon UK Ntoll ran several workshops for teachers and another for kids as part of
the education track. They had distributed these fun machines (almost 400) to the attendees.

Presently there is a lot of micro-fun and micro-love going on in PyCon UK

Present status of micro:bit

One of the major and primary reason for PSF joining the mission was that the project is open source. Both the software and hardware designs have released under open licenses. Now as the designs are open and available for the mass, anyone and everyone can remake these fun pieces. Microbit Foundation has been created and PSF is a part of it

Renaissance in making : join the movement

micro:bit has thousands possibilities hidden in it. People are exploring them, drawing their dreams with micro:bit. The following are some cool projects done with microbit:

A keyboard constructed just by affixing a simple buzzer to the micro:bit.

Our childhood [game of snakes] (https://twitter.com/HolyheadCompSci/status/750242493996957696) recreated with the help of micro:bit, MicroPython.

An effective clap controlled robot built with the help of micro:bit, MicroPython .

"Knowledge is power". Nowadays, heroes don't come with a sword, but with a micro:bit in their hands. So, if you want to learn, have fun and be a part of the mission grab your own micro:bit and start coding.

by Anwesha Das at December 01, 2016 03:58 PM

November 26, 2016

Shakthi Kannan

Functional Conference 2016, Bengaluru

I attended Functional Conf 2016 at Hotel Chancery Pavilion, Bengaluru between October 13-16, 2016. The conference was on October 14-15, 2016 and there were pre- and post-conference workshops.

After arriving early on the day of the workshop, I checked-in to my hotel accommodation. A view of the Kanteerva stadium from the hotel.

Kanteerva Stadium

Pre-Conference Workshop

I had registered for the “Deep Dive into Erlang Ecosystem” workshop by Robert Virding, one of the creators of the Erlang programming language. He started the day’s proceedings with an introduction to Erlang basics and covered both sequential and concurrent programming. He also gave an overview of the Open Telecom Platform (OTP) and answered a number of questions from the participants. He, along with Joe Armstrong and Mike Williams, designed the Erlang programming language for telecommunication, keeping the system in mind and all the way from the ground-up.

He also mentioned how WhatsApp was able to handle two million concurrent connections on a single box, and they would peak at three million at times. As another Emacs and Lisp user, he wrote Lisp Flavoured Erlang (LFE). He did not have much time to talk about it during the workshop, but, he did share differences between Erlang, Elixir and other languages that are being built around the Erlang ecosystem.

Day I

Robert Virding

The keynote of the day was from Robert Virding on “The Erlang Ecosystem”. He gave a good overview and history of the Erlang programming language, and the rationale for designing the same. He elaborated on the challenges they faced in the early days of computing, and the first principles that they had to adhere to. They did not intend the language to be functional, but, it turned out to be so, and greatly helped their use case. One of the beautiful expressions in Erlang to represent bit-level protocol formats in an expressive format is shown below:

<<?IP_VERSION:4, HLen:4, SrvcType:8, TotLen:16, 
      ID:16, Flgs:3, FragOff:13,
      TTL:8, Proto:8, HdrChkSum:16,
      SrcIP:32,
      DestIP:32, RestDgram/binary>>

Robert’s keynote was followed by another keynote by Brian McKenna on “No Silver Bullets in Functional Programming”. He gave the pros and cons of using Functional and other programming paradigms, and discussed the trade-offs. A number of code examples were shown to illustrate the concepts.

The next talk that I attended was by Aloïs Cochard on “Welcome to the Machines”. He gave an overview on the history of various Haskell libraries for data stream processing (pipes, conduit) and finally provided a tutorial on machines.

Abdulsattar Mohammed introduced the need for dependent types using Idris with simple examples in his “Dependently Typed Programming with Idris” talk. The concepts were well narrated with numerous code snippets.

The next talk by Debasish Ghosh on “An algebraic approach to functional domain modeling” was a modelling exercise on how to map business logic into functional algebra. He demonstrated a real world step-by-step process on the transformation from a problem domain to the solution domain consisting of algebraic data types, functions that operate on them, and business rules.

Ravi Mohan started his talk titled, “Equational Reasoning - From Code To Math and Back Again”, with his learning in the Functional Programming (FP) world, and an overview of how to go about reasoning from code to math. His laptop had ran out of battery power, and he did not have his laptop charger. Before his scheduled talk, he had re-created plain text notes of his slides and walked us through the content.

“Implementing Spark like system in Haskell” was an interesting session by Yogesh Sajanikar on his attempt to create a DSL for map-reduce jobs. He did cover much of the internals in his implementation and the challenges faced. The hspark code is available at https://github.com/yogeshsajanikar/hspark.

Day II

The second day began with the keynote by John Hughes on “Why Functional Programming Matters”. This was the best keynote of the conference, where John gave a very good historical perspective of FP and the experiences learnt in the process. His slide deck was excellent and covered all the necessary points that were part of his famous paper with the same title.

This was followed by a series of demos on cool features in Functional Programming languages - Erlang, Idris, APL, F# and Julia.

“Using F# in production: A retrospective” was a talk by Ankit Solanki on the lessons learned in using a functional language in implementing a tax e-filing application. They heavily use F# Type Providers to handle the variation in input CSV files.

“Real world functional programming in Ads serving” was a talk by Sathish Kumar from Flipkart on how they used functional programming in Java 8 for their product. They initially prototyped with Haskell, and used the constructs in Java.

I skipped the next talks, and spent time with Robert Virding in the Erlang booth.

Rethinking “State Management.” was presented by Tamizhvendan S. He narrated examples on state management for a cafe application using F#. He also gave a demo of Ionide text editor and its features.

Post-conference workshop

I attended John Hughes workshop on Property-based Testing. Initially, I thought he would be using Haskell QuickCheck, but, in the workshop he used the Erlang implementation. John mentioned that the Haskell and Erlang implementations are different, and their interests have diverged.

John Hughes

He started the workshop by taking an example of writing property tests for encoded SMS messages using Erlang. He also demonstrated on how a minimal test example is produced when a test fails. The choice of deciding on what properties to test is still an active research problem. He also demonstrated how to collect statistics from the test results to analyse and improve them.

The property-based testing has been used by his company, QuviQ, to test C protocols for the automobile industry. They were able to generate tests to detect bugs in the CAN bus implementation. Here is a summary of the statistics for a project:

3,000 pages of specification
20,000 lines of QuickCheck
1,000,000 LoC, 6 suppliers
200 problems
100 problems in the standard

He also shared his experience in generating tests for Klarna - an invoicing service web shop that uses Mnesia - the distributed Erlang database. He concluded by saying that we should not write tests, but, they shoud be generated.

Overall, the workshops were quite useful. It was good to have met both Robert Virding and John Hughes.

November 26, 2016 04:45 PM

Sayan Chowdhury

PyCon India 2016

PyCon India, this year was held at New Delhi at the JNU Convention Center.

Dev Sprints

During the Dev Sprint, Farhaan and Vivek were sprinting on Fedora Infrastructure projects primarily helping people contribute to Pagure.

Other projects/orgs like SciPy, Red Hat team, FOSSAsia, Junction etc were also sprinting.

The Dev Sprint turned out to have a good participation and couple of PRs were sent out by the participations. More than that, it’s more about participants getting to know about on how to contribute.

Red Hat Booth

Red Hat being a PyCon India sponsor did set-up a booth. Praveen, Suraj, Trishna, Ganesh, Rupali were talking to people, explaining them about different topics ranging from contributing to open source to products & services Red Hat provides.

I did stumble upon the booth a couple of times and helped them out to know how to contribute the Fedora Infrastructure project.

The booth was shared with PyLadies Pune (Kudos to Rupali, for letting them share the booth)

Talks

I mostly spend my time at the hallway talking/discussing stuffs with people. But I do attend the interesting talks.

I attended the talk by @rtnrpo and @bamachrn. Sadly both their talks were in the same slot.

@bamachrn explained the complete CentOS Community Container Pipeline.

@rtnpro talked on how we went ahead and built ircb by implementing Realtime microservices with server-side Flux.

Recently, I have been trying to work on my knowledge on licenses. @anwesha talk was one good talk which gave an idea on why to use a license, which license to choose when and other pros and cons.

DGPLUG Annual Meet

Every year at PyCon India, we have our annual DGPLUG meet at the conference, where people from different part of the country and we can meet each other once a year. We discussed what they gained from this year’s training. What’s wrong? What’s stopping them from contributing. We were joined by Sartaj, he shared valuable ideas and how to work on thinking process to contribute.

PyLadies

This year PyCon India had a presence of Pyladies. During the Open Space session, there was a open discussion about PyLadies and where Jeff Rush, Van Lindberg, Paul Everitt, Dmitry Filippov joined to share their experience in community.

Btw, we did have a really nice PyLadies umbrella as prop at the PyLadies booth.

Check the Flickr Album for pictures

November 26, 2016 09:40 AM

November 02, 2016

Runa Bhattacharjee

Learning yet another new skill

About 3 weeks ago when the autumn festival was in full swing, away from home, in Bangalore I made my way to a maker space nearby to spend a weekend learning something new. In addition to the thought of spending a lonely weekend doing something new, I was egged on by a wellness initiative at my workplace that encouraged us to find some space away from work. I signed up for a 2-day beginner’s carpentry workshop.

 

workfloor
When I was little, I often saw my Daddy working on small pieces of wood with improvised carving tools to make little figurines or cigarette holders. The cigarette holders were lovely but they were given away many years ago, when he (thankfully) stopped smoking. Some of the little figurines are still around the house, and a few larger pieces made out of driftwood remain in the family home. However, I do not recall him making anything like a chair or a shelf that could be used around the house. In India, it is the norm to get such items made, but by the friendly neighborhood carpenter. Same goes for many other things like fixing leaking taps, or broken electrical switches, or painting a room. There is always someone with the requisite skills nearby who can be hired. As a result, many of us lack basic skills in these matters as opposed to people elsewhere in the world.

 

I did not expect to become an expert carpenter overnight, and hence went with hope that my carpentry skills would improve from 0 to maybe 2, on a scale of 100. The class had 3 other people – a student, a man working in a startup, and a doctor. The instructor had been an employee at a major Indian technology services company, and now had his own carpentry business and these classes. He had an assistant. The space was quite large (the entire ground floor of the building) and had the electronics lab and woodwork section.

 

We started off with an introduction to several types of soft and hardwood, and plywoods. Some of them were available in the lab as they were going to be used during the class, or were stored in the workshop. Rarer wood like mahogany, and teak  were displayed using small wooden blocks. We were going to use rubber wood, and some plywood for our projects. Next, we were introduced to some of the tools – with and without motors. We learnt to use the circular saw, table saw, drop sawjigsaw, power drill and wood router. Being more petite than usual and unaccustomed to such tools, the 400-600w saws were quite terrifying for me at the beginning.

 

clock
The first thing I made was a wall clock shaped like the beloved deer – Bambi. On a 9”x 9” block of rubber wood, I first traced the shape. Then used a jigsaw to cut off the edges and make the shape. Then used the drill to make some holes and create the shapes for eyes and spots. The sander machine was eventually used to smoothen the edges. This clock is now proudly displayed on a wall at my Daddy’s home very much like my drawings from age 6.

 

shelfNext, we made a small shelf with dado joints that can be hung up on the wall. We started off with a block of rubber wood about 1’6’’ x 1’. The measurements for the various parts of this shelf was provided on a piece of paper and we had to cut the pieces using the table saw, set to the appropriate width and angle. The place where the shelves connected with the sides were chiseled out and smoothed with a wood router. The pieces were glued together and nailed. The plane and sander were used to round the edges.

 

The last project for the day was to prepare the base for a coffee table. The material was a block of  pinewood 2 inches thick and 2’ x  1’. We had to first cut these blocks from a bigger block, using the circular saw. Next, these were taken to the table saw to make 5 long strips of 2 inch width. 1 of these strips had about 1/2 inch from the edges narrowed down into square-ish pegs to fit into the legs of the table. The legs had some bits of the center hollowed out to be glued together into X shapes. These were left overnight to dry and next morning, with a hammer and chisel, the holes were made into which the pegs of the central bar could be connected. Finally, the drop saw was used to chop off the edges to make the table stand correctly. I was hoping to place a plywood on top of this base to use as a standing desk. However, it may need some more chopping to be made into the right height.

 

trayThe final project was an exercise for the participants to design and execute an item using a 2’ x 1’ piece of plywood. I chose to make a tray with straight edges using as much of the plywood I could. I used the table saw to cut the base and sides. The smaller sides were tapered down and handles shaped out with a drill and jigsaw. These were glued together and then nailed firmly in place.

 

By the end of the 2nd day, I felt I was more confident handling the terrifying, but surprisingly safe, pieces of machinery. Identifying different types of wood or making an informed decision when selecting wood may need more practise and learning. The biggest challenge that I think I will face if I had to do more of this, is of workspace. Like many other small families in urban India, I live in an apartment building high up the floors, with limited space. This means that setting up an isolated area for a carpentry workbench would not only take up space, but without an enclosure it will cause enough particle matter to float around a living area. For the near future, I expect to not acquire any motorized tools but get a few manual tools that can be used to make small items (like storage boxes) with relative ease and very little disruption.

by runa at November 02, 2016 08:09 AM

October 25, 2016

Trishna Guha

Containerization and Deployment of Application on Atomic Host using Ansible Playbook

This article describes how to build Docker image and deploy containerized application on Atomic host (any Remote host) using Ansible Playbook.

Building Docker image for an application and run container/cluster of containers is nothing new. But the idea is to automate the whole process and this is where Ansible playbooks come in to play.

Note that you can use Cloud/Workstation based Image to execute the following task. Here I am issuing the commands on Fedora Workstation.

Let’s see How to automate the containerization and deployment process for a simple Flask application:

We are going to deploy container on Fedora Atomic host.

First, Let’s Create a simple Flask Hello-World Application.

This is the Directory structure of the entire Application:

flask-helloworld/
├── ansible
│   ├── ansible.cfg
│   ├── inventory
│   └── main.yml
├── Dockerfile
└── flask-helloworld
    ├── hello_world.py
    ├── static
    │   └── style.css
    └── templates
        ├── index.html
        └── master.html

hello_world.py

from flask import Flask, render_template

APP = Flask(__name__)

@APP.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    APP.run(debug=True, host='0.0.0.0')

static/style.css

body {
  background: #F8A434;
  font-family: 'Lato', sans-serif;
  color: #FDFCFB;
  text-align: center;
  position: relative;
  bottom: 35px;
  top: 65px;
}
.description {
  position: relative;
  top: 55px;
  font-size: 50px;
  letter-spacing: 1.5px;
  line-height: 1.3em;
  margin: -2px 0 45px;
}

templates/master.html

<!doctype html>
<html>
<head>
    {% block head %}
    <title>{% block title %}{% endblock %}</title>
    {% endblock %}
    												<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
    												<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
    												<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
    												<link href='http://fonts.googleapis.com/css?family=Lato:400,700' rel='stylesheet' type='text/css'>

</head>
<body>
<div id="container">
    {% block content %}
    {% endblock %}</div>
</body>
</html>

templates/index.html

{% extends "master.html" %}

{% block title %}Welcome to Flask App{% endblock %}

{% block content %}
<div class="description">

Hello World</div>
{% endblock %}

Let’s write the Dockerfile.

FROM fedora
MAINTAINER Trishna Guha<tguha@redhat.com>

RUN dnf -y update && dnf -y install python-flask python-jinja2 && dnf clean all
RUN mkdir -p /app

COPY files/ /app/
WORKDIR /app

ENTRYPOINT ["python"]
CMD ["hello_world.py"]

Now we will work on Ansible playbook for our application that deals with the automation part:

Create inventory file:

[atomic]
IP_ADDRESS_OF_HOST ansible_ssh_private_key_file=<'PRIVATE_KEY_FILE'>

Replace IP_ADDRESS_OF_HOST with the IP address of the atomic/remote host and ‘PRIVATE_KEY_FILE’ with your private key file.

Create ansible.cfg file:

[defaults]
inventory=inventory
remote_user=USER

[privilege_escalation]
become_method=sudo
become_user=root

Replace USER with the user of your remote host.

Create main.yml file:

---
- name: Deploy Flask App
  hosts: atomic
  become: yes

  vars:
    src_dir: [Source Directory]
    dest_dir: [Destination Directory]

  tasks:
    - name: Create Destination Directory
      file:
       path: "{{ dest_dir }}/files"
       state: directory
       recurse: yes

    - name: Copy Dockerfile to host
      copy:
       src: "{{ src_dir }}/Dockerfile"
       dest: "{{ dest_dir }}"

    - name: Copy Application to host
      copy:
       src: "{{ src_dir }}/flask-helloworld/"
       dest: "{{ dest_dir }}/files/"

    - name: Make sure that the current directory is {{ dest_dir }}
      command: cd {{ dest_dir }}

    - name: Build Docker Image
      command: docker build --rm -t fedora/flask-app:test -f "{{ dest_dir }}/Dockerfile" "{{ dest_dir }}"

    - name: Run Docker Container
      command: docker run -d --name helloworld -p 5000:5000 fedora/flask-app:test
...

Replace [Source Directory] in src_dir field in main.yml with your /path/to/src_dir of your current host.

Replace [Destination Directory] in dest_dir field in main.yml with your /path/to/dest_dir of your remote atomic host.

Now simply run $ ansible-playbook main.yml :).  To verify if the application is running issue this command $ curl http://localhost:5000 on your atomic/remote host.

You can also manage your containers running on remote host using Cockpit. Check this article to know how to use Cockpit to manage your containers: https://fedoramagazine.org/deploy-containers-atomic-host-ansible-cockpit

fotoflexer_photo

screenshot-from-2016-10-21-18-52-45

Here is the repository of the above example:  https://github.com/trishnaguha/fedora-cloud-ansible/tree/master/examples/flask-helloworld

My future post will be related to ansible-container where I will describe how we can build Docker image and orchestrate container without writing any Dockerfile🙂.


by Trishna Guha at October 25, 2016 10:52 AM

October 20, 2016

Farhaan Bukhsh

PyCon India 2016

Day 0

“This is awesome!”, this was my first reaction when I boarded my first flight to Delhi. I was having trouble in finding a proper accommodation Kushal, Sayan and Chandan helped me a lot in that part, I finally got honour of  bunking with Sayan , Subho and Rtnpro which I will never forget. So, I landed and directly went to JNU convention center. I met the whole  Red Hat intern gang . It was fun to meet them all. I had proposed Pagure for Dev Sprint and I pulled in Vivek to do the same.

The dev sprint started and there was no sign of Vivek or Saptak, Saptak is FOSSASIA contributor and Vivek  contributes to Pagure with me. Finally it was my turn to talk about Pagure on stage , it was beautiful  the experience and the energy.  We got a lot of young and new contributors and we tried to guide them and make them send at least one PR.  One of them was lucky enough to actually make a PR and it got readily merged.

I met a lot of other contributors and other mentors and each and every project was simply amazing. I wish I could help all of them some day. We also met Paul, who writes code for PyCharm, we had a nice discussion over Vim v/s PyCharm.

Finally the day ended with us Vivek, Sayan , Subho  , Saptak and me going out to grab some dinner. I bunked with Sayan and Subho and we hacked all night. I was configuring my Weechat and was trying all the plugins available and trust me there are a lot of them.

Day 1

I was a session chair in one of the lecture room and it was a crazy experience from learning to write a firmware for a drone, using generators to write multi-threaded program and also to work with salt stack. The food was really good but the line for food was equally “pythonic” as the code should be.

There were a lot of stalls put up and I went to all of them and had a chat with them. My favorite one was PyCharm because Paul promised me to teach me some neat tricks to use PyCharm.

The Redhat and Pyladies booth were also there which also were very informative and they were responsible making people aware about certain social issues and getting women in tech.

We had two keynotes on this day one by BG and the other by VanL and trust me both of the keynotes were so amazing the they make you look technology from a different view point altogether.

One of the amazing part of such conferences are Open Space and Lightning talks. There are few open spaces which I attended and I found them really enthralling. I was waiting for the famous Stair case meeting of Dgplug.  We met Kushal’s mentor, Sartaj and he gave a deep insight in what and why we should contribute to open source. He basically told us that even if one’s code is not used by anyone he will still be writing code for the love of doing it.

After this we went for Dgplug/Volunteers  dinner at BBQ nation, it was an eventful evening😉 to be modest.

Day 2 

The last day of conference I remember myself wondering how a programming language translates into philosophy and how that philosophy unites a diverse nation like India. The feeling was amazing but I could sense the sadness. The sadness of parting from friends who meet once in an year. I could actually now relate all IRC nicks with their faces. It just brings a lot more on the table.

At last we all went to the humdrum of our normal life with the promise to meet again. But I still wonder how a technology bring comradeship between people from all nook and corners of life. How it relates from a school teacher to a product engineer . T his makes  me feel that this is more than just a programming language , this is that unique medium that unites people and give them power to make things right.

With this thought fhackdroid signs out!

Happy Hacking!


by fardroid23 at October 20, 2016 03:31 PM

October 01, 2016

Suraj Deshmukh

PyCon India 2016

This was my second PyCon and first visit to Delhi. I was excited to meet all old friends from dgplug, PythonPune, PyCon 2015, folks from twitter and IRC. It was different this time, because I co-hosted a Docker workshop with my colleague Lalatendu Mohanty at a large conference like this and was travelling with friends from PythonPune.

img_20160923_152730

Day 0

This was tutorials day (workshops + devsprints). We(I and Lala) started workshop early morning. Lala explained the concept of containers and how ecosystem of application deployment, delivery has changed with involvement of containers while I did the hands-on walkthrough of the workshop.

img_20160923_101538

Lala along with Praveen Kumar helped the folks during the hands-on. The workshop went well and people were curious to learn things in this changing world.

 

photo305468764721358848

After workshop I mainly sat in devsprint room and did some hacking(random things). Meanwhile Shubham Minglani, my team-mate helped folks understand ansible-container. He was mentoring in devsprint for ansible-container project. Given the limited internet speed, Shubham setup an excellent fall back plan for the folks to pull containers. He got his Raspberry Pi and wifi router where Raspberry Pi was running FTP server and wifi router was access point to that FTP server. That was an awesome setup and too much effort for potential contributors of the project.

At the end of the day, in volunteers meet, I was handed over the responsibility of Lecture Hall 2 a.k.a Audi 3, where I and a bunch of volunteers made sure things went smooth for the next two days.

Later we went for a short walk around JNU campus, where we could smell the political air in the campus.

Day 1

Day 1 started with BG‘s Keynote, but I had to rush in middle of it to take care of my hall, this started with making sure volunteers for the hall were present, speakers were present on time, schedule of the day and speaker’s info was handy.

Having handled the responsibility of hall I realised how hard it is to deal with so many behind the scene things for a conference to run smoothly. Due to this I could not attend any talk properly as I had to rush to take care of unforeseen things that would pop up. Things went well that day though.

Day 1 ended with Keynote by Van Lindberg, which I attended completely. In his awesome talk, he presented on how failures in software world are essential and how one can cope and learn from them.

img_20160924_172257_hht

Folks at Red Hat booth:

29960442065_d129327ac0_k

Day 2

Similar to Day 1, there was a keynote from Andreas Muller, from which I had to drop off in the middle to make sure all things in my hall were ready. First talk in my hall was by my colleague Ratnadeep Debnath on Real Time microservices with server side Flux, where he presented how he has implemented micro-service and async architecture in his very own project waarta and IRCB.

SONY DSC

Post which we had our usual yearly dgplug stair-case meeting, but this time, not on a staircase but on a ramp, where Kushal asked for feedback and gave general guidelines.

29880363361_801441d340_k

This time dgplug was even bigger and there were more folks doing awesome stuff. Kushal also acquainted us with his mentor – Sirtaj Singh Kang, who introduced him to Python.

29389909764_c7fe4ff1e5_k

This was followed by a Red Hat sponsored talk in my hall presented by Kushal, where he mainly talked about how Python is at heart of Red Hat’s open source projects and eco-system with projects like anaconda, Ansible, RDO, etc. to name a few.

29926454396_5ebb36c577_k

The last day of the PyCon ended with photo session with dgplug folks and various other groups.

29313770323_d3110e1d9c_k

Folks from PythonPune

29926453696_8709a73444_k

On a closing note, shout out to the volunteers viz. Shashank Kumar, Pushplata Ranjan, Prashant Jamkhande, Girish Joshi and others for being there and helping me out for two days. Things went smooth because of you and your helping hand.

This year’s PyCon was a good and a memorable experience. I made new friends and saw new places ( worth mentioning my extended stay, to explore Delhi and nearby places).

Credits

Thanks to: Kushal, Sayan, Chandan and other folks for awesome clicks, that I used in this blog. Suraj Narwade for all the pre-conference management. And finally Hemani for help with this blog.


by surajssd009005 at October 01, 2016 03:33 PM