text:
அமெரிக்காவில் தென்றல் என்ற இதழ் வெளிவருகிறது. சினிமா குப்பையாகிப் போன நம் ஊர் விகடன், குமுதம் போன்றவற்றுக்கு சந்தா கட்டுவதை நிறுத்தி விட்டு இதனை வாங்கிப் படிக்குமாறு கேட்டுக் கொள்கிறேன். படைப்புகள் அனைத்தும் மிகவும் தரமானவை. தமிழ்நாட்டில் கூட இவ்வளவு நல்ல இதழ்கள் இப்போது வருகின்றனவா என்பது சந்தேகமே.
மின்னிதழ்கள் படிக்க பெரிதாக விருப்பம் இல்லை. இது பெங்களூரில் அச்சு வடிவில் கிடைத்தால் வாங்கலாம். #ஏக்கப்பெருமூச்சுJuly 01, 2016 01:31 PM
Even though GDB is a traditional debugger, it provides support for dynamic fast user-space tracing. Tracing in simple terms is super fast data logging from a target application or the kernel. The data is usually a superset of what a user would normally want from debugging but cannot get because of the debugger overhead. The traditional debugging approach can indeed alter the correctness of the application output or alter its behavior. Thus, the need for tracing arises. GDB in fact is one of the first projects which tried to have an integrated approach of debugging and tracing using the same tool. It has been designed in a manner such that sufficient decoupling is maintained – allowing it to expand and be flexible. An example is the use of In-Process Agent (IPA) which is crucial to fast tracing in GDB but is not necessary for TRAP-based normal tracepoints.
GDB's Tracing Infrastructure
The tracing is performed by
collectcommands. The location where the user wants to collect some data is called a tracepoint. It is just a special type of breakpoint without support of running GDB commands on a tracepoint hit. As the program progresses, and passes the tracepoint, data (such as register values, memory values etc) gets collected based on certain conditions (if desired so). The data collection is done in a trace buffer when the tracepoint is hit. Later, that data can be examined from the collected trace snapshot using
tfind. However, tracing for now is restricted to remote targets (such as
gdbserver). Apart from this type of dynamic tracing, there is also support for static tracepoints in which instrumentation points known as markers are embedded in the target and can be activated or deactivated. The process of installing these static tracepoints is known as probing a marker. Considering that you have started GDB and your binary is loaded, a sample trace session may look something like this :
(gdb) trace foo (gdb) actions Enter actions for tracepoint #1, one per line. > collect $regs,$locals > while-stepping 9 > collect $regs > end > end (gdb) tstart [program executes/continues...] (gdb) tstop
This puts up a tracepoint at foo, collects all register values at tracepoint hit, and then for subsequent 9 instruction executions, collects all register values. We can now analyze the data using
(gdb) tfind 0 Found trace frame 0, tracepoint 1 54 bar = (bar & 0xFF000000) >> 24; (gdb) tdump Data collected at tracepoint 1, trace frame 0: rax 0x2000028 33554472 rbx 0x0 0 rcx 0x33402e76b0 220120118960 rdx 0x1 1 rsi 0x33405bca30 220123089456 rdi 0x2000028 33554472 rbp 0x7fffffffdca0 0x7fffffffdca0 rsp 0x7fffffffdca0 0x7fffffffdca0 . . rip 0x4006f1 0x4006f1 <foo+7> [and so on...] (gdb) tfind 4 Found trace frame 4, tracepoint 1 0x0000000000400700 55 r1 = (bar & 0x00F00000) >> 20; (gdb) p $rip $1 = (void (*)()) 0x400700 <foo+22>
So one can observe data collected from different trace frames in this manner and even output to a separate file if required. Going more in depth to know how tracing works, lets see the GDB's two tracing mechanisms :
Normal Tracepoints
These type of tracepoints are the basic default tracepoints. The idea of their use is similar to breakpoints where GDB replaces the target instruction with a TRAP or any other exception causing instruction. On x86, this can usually be an
int 3which has a special single byte instruction –
0xCCreserved for it. Replacing a target instruction with this 1 byte ensures that the normal instructions are not corrupted. So, during the execution of the process, the OS hits the
int 3where it halts and program state is saved. The OS sends a
SIGTRAPsignal to the process. As GDB is attached or is running the process, it receives a
SIGCHLDas a notification, that something happened with a child. It does a
wait(), which will tell it that process has received a
SIGTRAP. Thus the
SIGTRAPnever reaches the process as GDB intercepts it. The original instruction is first restored, or executed out-of-line for non-stop multi-threaded debugging. GDB transfers the control to the trace collection which does the data collection part upon evaluating any condition set. The data is stored into a trace buffer. Then, the original instruction is replaced again with the tracepoint and normal execution continues. This all fine and good, but there is a catch – the TRAP mechanism alters the flow of the application and the control is passed to the OS which leads to some delay a compromise in speed. But even with that, because of a very restrictive conditional tracing design, and better interaction of interrupt-driven approaches with instruction caches, normal interrupt- based tracing in GDB is a robust technique. A faster solution would indeed be a pure user-space approach, where everything is done at the application level.
Fast Tracepoints
Owing to the limitations stated above, a fast tracepoint approach was developed. This special type of tracepoint uses a dynamic tracing approach. Instead of using the breakpoint approach, GDB uses a mix of IPA and remote target (
gdbserver) to replace the target instruction with a 5 byte jump to a special section in memory called a jump-pad. This jump-pad, also known as a trampoline, first pushes all registers to stack (saving the program state). Then, it calls the collector function for trace data collection, it executes the displaced instruction out-of-line, and jumps back to the original instruction stream. I will probably write something more about how trampolines work and some techniques used in dynamic instrumentation frameworks like Dyninst in a subsequent post later on.
Fast tracepoints can be used with command
ftrace, almost exactly like with the
tracecommand. A special command in the following format is sent to the In-Process Agent by
<tracepoint object>is the object containing bytecode for conditional tracing, address, type, action etc. and
<jump pad>is the 8-byte long head of the jump pad location in the memory. The IPA prepares all that and if all goes well, responds to such a query by,
<target address>is the address where the tracepoint is put in the inferior,
<jump_pad>is the updated address of the jump pad head and the
<fjump_size>are the jump instruction sequence and its size copied to the command buffer, sent back by IPA. The remote target (
gdbserver) then modifies the memory of the target process. Much more fine grained information about fast tracepoint installation is available in the GDB documentation. This is a very pure user-space approach to tracing. However, there is a catch – the target instruction to be replaced should be at least 5 bytes long for this to work as the jump is itself 5 byte long (on Intel x86). This means that fast tracepoints using GDB cannot be put everywhere. How code is modified when patching a 5 bytes instruction is a discussion of another time. This is probably the fastest way yet to perform dynamic tracing and is a good candidate for such work.
The GDB traces can be saved with tsave and with the –ctf switch may be exported to CTF also. I have not tried this but hopefully it should at least open the traces with TraceCompass for further analysis. The GDB's fast tracepoint mechanism is quite fast I must say – but in terms of usability, LTTng is a far better and advanced option. GDB however allows dynamic insertion of tracepoints and the tracing features are well integrated in your friendly neighborhood debugger. Happy Tracing!
June 29, 2016 09:42 PM
* ઘર લેવું ટફ છે, એમાંય કહેવાય છે કે મુંબઈમાં રોટલો મળે પણ ઓટલો ન મળે. છેવટે, ઓટલો મળ્યો (નાનો પણ મળ્યો). એટલે હવે અમારું દોડવાનું-સાયકલવાનું-ફરવાનું થોડો સમય પ્રમાણમાં થશે (પણ થશે ખરું!).
* બેંક લોન – અનુભવ સરવાળે સારો રહ્યો પણ મારા જેવાં આળસુ માણસ માટે દોડા-દોડી કરવાનું ભારે પડ્યું.
* બિલ્ડરને હું જ્યારે મળવા સાયકલ પર ગયો ત્યારે બધાં નવાઇ પામ્યા હતા. હા, રીક્ષાના પૈસા કોણ બગાડે?
June 28, 2016 04:58 AM
[Published in Open Source For You (OSFY) magazine, October 2015 edition.]
Internet Relay Chat (IRC) provides instant communication over the Web. It is generally used for one-to-one communication or group discussion forums, also known as channels. In this next article in the GNU Emacs series, we shall learn how to use GNU Emacs as an Internet Relay Chat (IRC) client.
What is IRC?
Internet Relay Chat (IRC) is a messaging protocol that was created by Jarkko Oikarinen in 1988. An IRC server has a number of channels (or rooms, as how they are called in other chat software) where both technical and non-technical discussions take place. Every user requires a nickname to chat. You will need to register your nickname with a password to identify yourself every time you log in to the IRC server. IRC can also be used for file sharing among users.
You can connect to any one of a number of IRC servers that are available worldwide, free. The most popular is Freenode (irc.freenode.net). The other IRC servers, to name a few, are IRCNet, OFTC, and EFNet. The Debian and Ubuntu projects have their own chat servers – irc.debian.org and irc.ubuntu.com. All IRC channel names begin with '#'. Some channels begin with '##'. Examples of channels are ##linux-india, #dgplug, #emacs, #ruby, #guile, #lisp, and #scheme. You can also create your own channels, or host your own IRC server. Some examples of free and open source IRC server software are IRCd, UnrealIRCd, and Synchronet. Each IRC channel has a topic that can include useful links relevant to the channel. Sometimes announcements, or news updates are also mentioned in the topic.
Basic commands
A number of commands can be given to the IRC server. A few of them are discussed below:
/list is used to provide a list of all the available channels in a server. For example: /list in irc.freenode.net returned the following:
... #linod 1 ##welding 3 Welcome to ##Welding, We're a little bare at the moment, but will help if we can. Tutorials: https://www.youtube.com/channel/UCJAFY2kKKb5sg79yld7T3hA #drupal-ph 1 "Drupalista! Welcome to Philippine Drupal Users Group. Have a good time chatting. If you have a question, please don't ask to ask but fire up your question in very specific and constructive way! Please join #drupal or #drupal-support if no one is around" #orx-project 4 Orx: Portable Game Engine #tinkerforge 5 #osi 10 The Open Source Initiative #xampp 1 #guitar 8 #bitcoin-ar 3 Comunidad Bitcoin Argentina #LargeHadrosaurCollider 19 Welcome to the LHC, est. 2001 | http://www.largehadrosaurcollider.net | August Birthdays: Digby 08/21, Josh 08/31 | At night it is pitch black, often for months. | http://tinyurl.com/psgdagl * End of /LIST
/msg NickServ REGISTER password e-mail is used to register your nickname to the IRC server. /msg NickServ IDENTIFY password is used to identify yourself to the server.
/me message displays the message for a user. For example:
/me says "Hello, World!" * mbuf says "Hello, World!"
/whois nickname provides useful information for a user. For example:
/whois mbuf * [mbuf] (~firstname.lastname@example.com): Shakthi Kannan * [mbuf] #guile #scheme ##linux-india #stumpwm #guix #dgplug #lisp #emacs * [mbuf] kornbluth.freenode.net :Frankfurt, Germany * [mbuf] is connecting from *@220.127.116.11 220.127.116.11 * [mbuf] idle 00:41:52, signon: Thu Sep 3 20:36:52 * [mbuf] is logged in as mbuf * [mbuf] End of WHOIS list.
/msg nickname is used to send a private message to a nickname and to start a private conversation.
/help provides useful help on basic IRC commands. These commands are:
ADDBUTTON ALLCHAN ALLCHANL ALLSERV AWAY BACK BAN CHANOPT CHARSET CLEAR CLOSE COUNTRY CTCP CYCLE DCC DEBUG DEHOP DELBUTTON DEOP DEVOICE DISCON DNS ECHO EXEC EXECCONT EXECKILL EXECSTOP EXECWRITE FLUSHQ GATE GETFILE GETINT GETSTR GHOST GUI HELP HOP ID IGNORE INVITE JOIN KICK KICKBAN KILLALL LAGCHECK LASTLOG LIST LOAD MDEHOP MDEOP ME MENU MKICK MODE MOP MSG NAMES NCTCP NEWSERVER NICK NOTICE NOTIFY OP PART PING QUERY QUIT QUOTE RECONNECT RECV SAY SEND SERVCHAN SERVER SET SETCURSOR SETTAB SETTEXT SPLAY TOPIC TRAY UNBAN UNIGNORE UNLOAD URL USELECT USERLIST VOICE WALLCHAN WALLCHOP User defined commands: ACTION AME ANICK AMSG BANLIST CHAT DIALOG DMSG EXIT GREP J KILL LEAVE M ONOTICE RAW SERVHELP SPING SQUERY SSLSERVER SV UMODE UPTIME VER VERSION WALLOPS WII Plugin defined commands: UNLOAD UNLOAD LOAD PY LOAD RELOADALL SOURCE TCL RELOADALL UNLOADALL PL_RELOAD RELOAD UNLOAD LOAD TIMER Type /HELP <command> for more information, or /HELP -l
/quit is used to disconnect and exit from IRC.
/join #channel - is used to join a channel. For example: /join #guix.
/nick newnickname changes your nick to newnickname. Suppose, you wish to move away from the computer, you can change your nick to nick|away, or nick|phone.
/part is used to leave a channel.
Using rcirc
If you are using a recent GNU/Linux distribution, you should already have rcirc as part of GNU Emacs. You can simply start it by typing M-x rcirc from inside Emacs. The 'M' key represents the Meta key, which is usually mapped to the 'Alt' key. After rcirc connects to the IRC server, you can use /nick to change your nickname, register (only the first time) your nick, identify yourself, join channels, and start chatting! Since everything is a buffer in GNU Emacs, each channel is a separate buffer. For example, #email@example.com is the #emacs IRC channel. All your basic buffer navigation commands will work just like they would on a file!
Some basic rcirc commands
The rcirc commands for the above mentioned IRC commands are given in the following table:
IRC rcirc /list rcirc-cmd-list /msg NickServ rcirc-authenticate /me rcirc-cmd-me /whois rcirc-cmd-whois /msg nick rcirc-cmd-msg /help /help /quit rcirc-cmd-quit /join rcirc-cmd-join /nick rcirc-cmd-nick /part rcirc-cmd-part
GNU Emacs is an extensible editor. There are a number of locations where Emacs checks for custom configurations before launching the editor. These are: ~/.emacs, /.emacs.el, and/.emacs.d/init.el. The start-up files can be customised, and their locations can also be changed. There are a number of ways to organize, and manage your Emacs configuration. Until we get to learn Emacs lisp, and customize Emacs as a project, we shall use ~/.emacs for all our user-specific customizations.
rcirc customization
Create a ~/.emacs.d/etc folder in your $HOME directory and an Elisp file called init-rcirc.el in it. It should contain the following (change nick, user-name and full-name to suit your needs):
;; Default user. (setq rcirc-default-nick "shaks") (setq rcirc-default-user-name "shakthimaan") (setq rcirc-default-full-name "Shakthi Kannan") ;; Channels to join at startup. (setq rcirc-server-alist '(("irc.freenode.net" :channels ("##linux-india" "#dgplug" "#rcirc" "#emacs"))))
The above is an example of Emacs Lisp code. Comments begin with two semi-colons. The setq construct sets the second argument value to the first argument, which is a quoted symbol. For example, the symbol 'rcirc-default-nick is set to "shaks". The rcirc-server-alist defines the initial list of channels to login at startup.
You can now start GNU Emacs from the GNOME terminal using the following command:
$ emacs -q -l ~/.emacs.d/etc/init-rcirc.el
You will then automatically connect to the four IRC channels.
How to use IRC
People join IRC channels to have their doubts regarding free and open source software clarified. Sometimes, off-topic discussions also happen. It is like live technical support, but has a social context to it. Whenever you are connected online, you must be logged in to IRC. You can have discussions in the channel, or in private, if the other party agrees. It is a good place to learn a lot about free and open source software, and you are bound to make a lot of friends. Since people from all over the world participate, which means they are online in different time zones, some channels log the discussions for future reference. As always, before asking a question, it is important for you to do your homework first. Take sufficient time and put in an effort to debug and identify the problem to the best of your ability.
Some users in the channel may ask you for more information before being able to provide you with any assistance. So, be prepared to provide all the information necessary about the bug or error when you seek help. Sometimes, people might be logged in the channel, but, they might be away from the computer. So, even if you don't get a response, be patient; come back later and ask again.
You should not paste more than four continuous lines of text in the channel, as it will 'flood' the screen for everyone else. Instead, use an external paste service like gist.github.com, or fpaste.org. These services will provide a shortened URL that you can pass around in the channel. Whoever is interested in helping you will view the contents from the link. If you enter text in the channel, it means that it is addressed to everyone in the channel. If you wish to say something to a specific user, mention their nickname first, and then type in the text.
Most IRC client software provide you with panels that list the channels that you are logged in, and show the list of users. If someone mentions your nickname in a channel, then the corresponding channel will change colour or representation to indicate that there is a message for you. A few users are channel operators (or moderators) and they have special privileges. They are similar to 'root' users in a system, and they exist to keep the signal-to-noise ratio to a minimum, and keep a vigil on the channel.
An IRC bot is a client software that connects to the IRC server as a user, but can respond to commands. It can thus be programmed to provide many services in a channel. You can customize existing bots, or write your own. Examples of IRC bots are Cerberus, Gambot and irccd. Cinch is an example of an IRC bot building framework written in Ruby. Bots can be used during an IRC meeting session to keep track of user questions. They can evaluate programming language constructs and return meaningful errors to newbies in the channel. They can be used to send a notification to the channel if a project test build fails, or when a new bug has been filed. The possibilities are endless.
IRC meeting protocol
A free and open source software project will have a dedicated IRC channel where the project members will meet to have discussions. Meetings can be scheduled, and can happen in different time zones depending on where the users are located. There is a protocol and etiquette to be followed during such meetings. The speaker or moderator should not be interrupted during the session.
If you wish to ask a question, type '?' and wait. When the speaker has finished and feels that you can type in your text, you will be asked to do so. After you have finished typing your content, end with 'EOF'. Similarly, if you need to speak during the session, type '!', and wait. You can give your consent or dissent to statements made in the channel using +1 or -1, respectively.
You are encouraged to read the rcirc manual and customize rcirc to your needs. If you have made it this far, do connect to irc.freenode.net, and feel free to say 'Hi' to me. I am 'mbuf' on irc.freenode.net. A screenshot of an rcirc session is shown below:
19:35 <mbuf> http://ecb.sourceforge.net/screenshots/index.html 19:35 *** Arpita QUIT Client Quit 19:36 <rtnpro> ! 19:36 <mbuf> rtnpro, shoot! 19:37 <rtnpro> How do we get the emacs code browser? 19:37 <rtnpro> <EOF> 19:37 <mbuf> rtnpro, 1. Need to install "ecb" from your distro package manager 2. you could have searched this on the Internet :) 19:38 <rtnpro> It is not in my distro 19:38 <sumitc> ! 19:38 <mbuf> rtnpro, and which distro are you using? 19:38 <rtnpro> Its Fedora 9 19:39 <rtnpro> I have got emacs but not emacs code browser 19:39 <mbuf> rtnpro, you can always install from source 19:39 <techno_freak> rtnpro, http://ecb.sourceforge.net/downloads.html 19:39 *** khushbu QUIT Ping timeout: 244 seconds 19:39 <rtnpro> ok 19:39 <mbuf> sumitc, shoot! 19:39 <sumitc> what is a tag-file? 19:40 <rtnpro> What factors should decide the choice of our editor? 19:40 <mbuf> rtnpro, wait! 19:40 *** pushkal JOIN 19:40 <mbuf> sumitc, the TAGS file contains the details of the reference count, and locations of variables/functions et. al. 19:41 <sumitc> So, a tag file is always associated with a specific file? 19:41 <mbuf> sumitc, no, it can have information of files in a directory 19:41 <sumitc> ok 19:41 <sumitc> <eof> 19:42 <mbuf> sumitc, think of it as a database that answers all your queries regarding code references
June 23, 2016 04:00 PM
rcirc manual.
IRC Help.
Fedora project - How to use IRC.
गौरी। कुछ ५ साल की थी जब उसकी माँ इलाहबाद की गर्मियों की चपेट में आ गयी और २ दिन में ही इस दुनिया से चली गयीं उम्र इतनी नहीं थी कि सब कुछ समझ पाती, मगर पापा थे, भैया थे, दादी थीं, तीनों बुआ थीं. खयाल रखने वाले काफ़ी लोग थे। ज़िन्दगी इतनी बुरी … Continue reading गौरी
The post गौरी appeared first on Swati's Blog.June 20, 2016 05:04 AM
Hi to all the souls on planet.debian.org . I hope to meet many of you in Debconf16 which is being held at UCT (University of Cape Town), Rhondenbosch, South Africa and am excited to be part of it. I pushed a blog post about my journey to debconf till date.
I express my sympathy and condolences to all the people who died in the cowardly shooting spree done by a madman in Orlando😦 . I have been upset about this development but as what's done is done, it's best to just keep moving.
Closer to my own reality, I was shocked to discover during my whole visa experience that nowhere there is any knowledge about vaccinations that people should have when they are traveling internationally. I was kinda rudely awakened by this mail which prompted me to take Hep A shot and also start a thread on the mailing list. The more comprehensive info. I got was at the CDC site . It seems to be a go-to site to find about what is recommended. While I will not be taking any shots now as it's nearing to the date of travel, if I had known before, it would have been a valuable resource in itself. Definitely something to be bookmarked if you are going overseas and are worried or have health concerns.
On another note, About few days back, there was a discussion as recently, travel advisories have been issued about possible terror action in South Africa by various embassies due to the holy month of Ramadan.
And the recent attack just proves that it takes just one twisted personality with a perverse sense of justice or whatever s/he/ thinks as just to do what s/he did and guns and more security and not the answer.
My take on it some would describe as simplistic, there are things which you can control, there are things beyond your control. No security agency, no country can guarantee it. By being either home or away, you can't wish you will not get bitten. Got images of Final Destination invoked when I was sharing that, for as an Indian, do believe a bit on fate and karma. Also, me being single also plays a part, perhaps I would have been more cautious or have different motivations if I had a family so I do understand some of the concerns which have been raised by people in that thread. At the end of it, it really is a non-choice in my book.
If you don't take part due to fear,uncertainty of a possible attack, you have already given in to fear and uncertainty and I believe this goes against the very philosophy of what Debian stands for, being bold, taking chances and having trust in your fellow men. If we haven't allowed proprietary, commercial software to win over us, how can we allow less than 0.1% radically motivated people to scare us ? And the recent attack just proves that it takes just one twisted personality with a perverse sense of justice or whatever s/he/ thinks as just to do what s/he did. More guns and more security are certainly not the answer here.
A more troubling part is not terrorism but caste-ism and racism which have been also making news (not in a good way) in India. Now while I cannot claim to have any knowledge about Africans apart from 2-3 conversations which didn't go anywhere, two-three preconceived notions about them can easily be countered. As far as drugs are concerned, IF some Africans are doing drugs smuggling, it would be wrong to pin all of it onto them. India has been fighting drugs smuggling from the 70's itself. From what we know and have learnt over the years from consuming media, India shares porous borders with almost all our neighbors. Of those, Pakistan is supposed to be the largest grower and supplier and then Nepal where young boys are used as Traffickers. The recent film 'Rocky Handsome' and the recent upcoming controversial movie 'Udta Punjab' are trying to explore these issues. As far as drinking in open is concerned, I have seen and been part of Punjabi parties where both men and women drink without abandon in farm parties. Russians, Germans and Israelis can also out-drink a person on their day/mood. As far as sexuality is concerned, we are the second most populous country in the world, so the less said the better .
I believe though that underneath this racism is money, greed, phobia, language barriers and just maybe some lifestyle choices as well. I have seen North-Eastern, Chinese, Buddhist people being colored with the same brush. The more interesting case is with the Buddhist as can be seen in Himachal Pradesh, where locals feel they are deprived as Europeans come and indulge Buddhists for their monasteries and their way of life while locals don't get much money from them. This is partly true, but also due to our own short-comings in dealing with westerners. I have never seen my own countrymen going out of their way to make westerners or any tourists for that matter feel welcome in a genuine way. More often, the behavior is between hostility, jealousy and a perverted sense of hero-worship due to the color of skin. As far as being racist and bigoted are concerned, it seems we are not alone, just day before came across this news from Malaysia which is interesting in the sense that how people from different communities frame their own history and people around them, forget that is false and misleading to what we in India know to be the truth, it probably is/would be interesting for somebody who does comparative history, myth and folklore analysis. I was actually planning to talk about some of the talks I am looking forward to hearing and seeing on Debconf but guess that will have to wait for few more days. Hope to publish one more before actually flying to Debconf. Till later.
Filed under: Miscellenous Tagged: #Debconf16, #racism, #terrorism, #vaccinationsJune 17, 2016 04:59 PM
It is no mystery that Perf is like a giant organism written in C with an infinitely complex design. Of course, there is no such thing. Complexity is just a state of mind they would say and yes, it starts fading away as soon as you get enlightened. So, one fine day, I woke up and decided to understand how the
perf.datafile works because I wanted to extract the Intel PT binary data from it. I approached Francis and we started off on an amazing adventure (which is still underway). If you are of the impatient kind, here is the code.
A Gentle Intro to Perf
I would not delve deep into Perf right now. However, the basics are simple to grasp. It is like a Swiss army knife which contains tools to understand your system from either a very coarse to a quite fine granularity level. It can go all the way from profiling, static/dynamic tracing to custom analyses build up on hardware performance counters. With custom scripts, you can generate call-stacks, Flame Graphs and what not! Many tracing tools such as LTTng also support adding perf contexts to their own traces. My personal experience with Perf has usually been just to profile small piece of code. Sometimes I use its annotate feature to look at the disassembly to see instruction profiling right from my terminal. Occasionally, I use it to get immediate stats on system events such as syscalls etc. Its fantastic support with the Linux kernel owing to the fact that it is tightly bound to each release, means that you can always have reliable information. Brendan Gregg has written so much about it as part of his awesome Linux performance tools posts. He has some some actual useful stuff you can do with Perf. My posts here just talks about some of its internals. So, if Perf was a dinosaur, I am just talking about its toe in this post.
Perf contains a kernel part and a userspace part. The userspace part of Perf is located in the kernel directory tools/perf. The
perfcommand that we use is compiled here. It reads kernel data from the Perf buffer based on the events you select for recording. For a list of all events you can use, do
perf listor
sudo perf list. The data from the Perf's buffer is then written to the
perf.datafile. For hardware traces such as in Intel PT, the extra data is written in auxiliary buffers and saved to the data file. So to get your own custom stuff out from Perf, just read its data file. There are multiple ways like using scripts too, but reading a binary directly allows for a better learning experience. But the
perf.datais like a magical output file that contains a plethora of information based on what events you selected, how the
perf recordcommand was configured. With hardware trace enabled, it can generate a 200MB+ file in 3-4 seconds (yes, seriously!). We need to first know how it is organized and how the binary is written.
Dissection Begins
Rather than going deep and trying to understand scripted ways to decipher this, we went all in and opened the file with a hex editor. The goal here was to learn how the Intel PT data can be extracted from the AUX buffers that Perf used and wrote in the
perf.datafile. By no means is this the only correct way to do this. There are more elegant solutions I think, esp. if you see some kernel documentation and the uapi perf_event.h file or see these scripts for custom analysis. Even then, this can surely be a good example to tinker around more with Perf. Here is the workflow:
- Open the file as hex. I use either Vim with
:%!xxdcommand or Bless. This will come in handly later.
- Use
perf report -Dto keep track of how Perf is decoding and visualizing events in the data file in hex format.
- Open the above command with GDB along with the whole Perf source code. It is in the
tools/perfdirectory in kernel source code.
If you setup your IDE to debug, you would also have imported the Perf source code. Now, we just start moving incrementally – looking at the bytes in the hex editor and correlating them with the magic
perf reportis doing in the debugger. You'll see lots of bytes like these :
A cursory looks tells us that the file starts with a magic –
PERFFILE2. Searching it in the source code eventually leads to the structure that defines the file header:
struct perf_file_header { u64 magic; u64 size; u64 attr_size; struct perf_file_section attrs; struct perf_file_section data; /* event_types is ignored */ struct perf_file_section event_types; DECLARE_BITMAP(adds_features, HEADER_FEAT_BITS); };
So we start by mmaping the whole file to
bufand just typecasting it to this. The
header->dataelement is an interesting thing. It contains an offset and size as part of
perf_file_sectionstruct. We observe, that the offset is near the start of some strings – probably some event information? Hmm.. so lets try to typecast this offset position in the mmap buffer (
pos + buf) to
perf_event_header struct:
struct perf_event_header { __u32 type; __u16 misc; __u16 size; };
For starters, lets further print this
h->typeand see what the first event is. With our
perf.datafile, the
perf report -Dcommand as a reference tells us that it may be the event type 70 (
0x46) with 136 (
0x88) bytes of data in it. Well, the hex says its the same thing at (
buf + pos) offset. This in interesting! Probably we just found our event. Lets just iterate over the whole buffer while adding the
h->size. We will print the event types as well.
while (pos < file.size()) { struct perf_event_header *h = (struct perf_event_header *) (buf + pos); qDebug() << "Event Type" << h->type; qDebug() << "Event Size" << h->size; pos += h->size; }
Nice! We have so many events. Who knew? Perhaps the data file is not a mystery anymore. What are these event types though? The
perf_event.hfile has a big enum with event types and some very useful documentation. Some more mucking around leads us to the following enum :
enum perf_user_event_type { /* above any possible kernel type */ PERF_RECORD_USER_TYPE_START = 64, PERF_RECORD_HEADER_ATTR = 64, PERF_RECORD_HEADER_EVENT_TYPE = 65, /* depreceated */ PERF_RECORD_HEADER_TRACING_DATA = 66, PERF_RECORD_HEADER_BUILD_ID = 67, PERF_RECORD_FINISHED_ROUND = 68, PERF_RECORD_ID_INDEX = 69, PERF_RECORD_AUXTRACE_INFO = 70, PERF_RECORD_AUXTRACE = 71, PERF_RECORD_AUXTRACE_ERROR = 72, PERF_RECORD_HEADER_MAX };
So event 70 was
PERF_RECORD_AUXTRACE_INFO. Well, the Intel PT folks indicate in the documentation that they store the hardware trace data in an AUX buffer. And
perf report -Dalso shows event 71 with some decoded PT data. Perhaps, that is what we want. A little more fun with GDB on
perftells us that while iterating perf itself uses the union
perf_eventfrom event.h which contains an
auxtrace_eventstruct as well.
struct auxtrace_event { struct perf_event_header header; u64 size; u64 offset; u64 reference; u32 idx; u32 tid; u32 cpu; u32 reserved__; /* For alignment */ };
So, this is how they lay out the events in the file. Interesting. Well, it seems we can just look for event type 71 and then typecast it to this struct. Then extract the size amount of bytes from this and move on. Intel PT documentation further says that the aux buffer was per-CPU so we may need to extract separate files for each CPU based on the
cpufield in the struct. We do just that and get our extracted bytes as raw PT packets which the CPUs generated when the
intel_ptevent was used with Perf.
A Working Example
The above exercise was surprisingly easy once we figured out stuff so we just did a small prototype for our lab's research purposes. There are lot of things we learnt. For example, the actual bytes for the header (containing event stats etc. – usually the thing that Perf prints on top if you do
perf report --header) are actually written at the end of the Perf's data file. How endianness of file is determined by magic. Just before the header in the end, there are some bytes which I still have not figured out (near event 68) how they can be handled. Perhaps it is too easy, and I just don't know the big picture yet. We just assume there are no more events if the event size is 0😉 Works for now. A more convenient way that this charade is to use scripts such as this for doing custom analyses. But I guess it is less fun that going all l33t on the data file.
I'll try to get some more events out along with the Intel PT data and see what all stuff is hidden inside. Also, Perf is quite tightly bound to the kernel for various reasons. Custom userspace APIs may not always be the safest solution. There is no guarantee that analyzing binary from newer versions of Perf would always work with the approach of our experimental tool. I'll keep you folks posted as I discover more about Perf internals.June 17, 2016 01:57 PM
- Open the file as hex. I use either Vim with
* શિશિરભાઇએ ઉડતા પંજાબની (એટલે કે પંજાબની) ગંભીર સમસ્યા પર અને એક ગામે તેની સામે લીધેલા ઉપાય પર સરસ લેખ લખ્યો છે. રનિંગ અને સાયકલિંગ કે પછી એવી શારીરિક કસરત પણ તમને ફાલતુ વસ્તુઓમાં સમય આપવા દેતી નથી (દા.ત. ખાવું-પીવું કે ગામ-ગપાટાં મારવા કે ફેસબુકમાં ચોંટેલા રહેવું કે પછી પંચાત કરવી).
એટલે જ રનિંગને એક માત્ર કાયદા માન્ય ડ્રગ્સ કહેવાય છે
June 16, 2016 05:16 PM
One Plus has always provided cutting edge phones at less than half the price of leading branding. Today they launched the One Plus 3 with some great specifications. The good thing is, you don't an invite anymore.
Here is some great specifications:
- Snapdragon 820 Quad Core processor
- 6GB RAM (more than my PC :))
- Dual Nano Sims
- Fast charging upto 60% within 30 Minutes
- 16MP camera with Optical image stabilisation
- Android 6.0.1
- All metallic body
- Finger print scanner
- Any many more
Buy OnePlus 3 on Amazon for Rs. 27,999
June 15, 2016 04:04 AM
Behind the scenes A Brevet or Randoneering is a long distance cycling event in which the cyclist attempts to complete a distance of 200 km or more, passing through predetermined and timed checkpoints, completing the entire distance in a given time. I started cycling after a break of 25 years in November and was happy doing small … Continue reading The 200 km brevet that I failed to complete
The post The 200 km brevet that I failed to complete appeared first on Swati's Blog.June 14, 2016 09:50 AM
The Initial Journey
My journey with OpenStack started in December 2015, while I was working, since one and half years, at a Software company in Pune and my friend Akanksha Agrawal told me about Outreachy and the OpenStack Community.
Motivated by her, I decided to learn OpenStack and get back to doing Open Source work that I so much loved during my college days.
The most fulfilling part of my initial journey of learning OpenStack, was when I made my first contribution to OpenStack Ironic. I had picked up a bug to work on for the OpenStack Bug Smash Mitaka Pune and with the help of OpenStack Ironic Community was able to get my patch merged in Ironic. I am really grateful to everyone from the OpenStack Ironic Community to help me get kick started. It had been a very long time since I made another first contribution to an Open Source Project.
After that I started learning Neutron, the networking component of OpenStack and that interested me a lot. As I began understanding the Neutron architecture, I got in touch with my mentor Rossella Sblendido and she further encouraged me to learn OpenvSwitch.
My Internship Project
A Switch is a device that connects multiple devices together on a computer network. In Neutron, a virtual switch connects a physical interface to a virtual interface. OpenvSwitch is a software based switch used by Neutron to implement virtual switches.
My project, Neutron – Metering agent add port statistics, requires me to use the OpenvSwitch tools to provide port statistics to the Neutron Metering Agent.
The Neutron Metering Agent is used to send metering notifications about network related metrics (These are measurable network usage data).
The Switch related meters that provide network port statistics are:
Received Packets: switch.port.receive.packets
Transmitted Packets: switch.port.transmit.packets
Received Bytes: switch.port.receive.bytes
Transmitted Bytes: switch.port.transmit.bytes
Receive Drops: switch.port.receive.drops
Transmit Drops: switch.port.transmit.drops
Receive Errors: switch.port.receive.errors
Transmit Errors: switch.port.transmit.errors
Receive Frame Alignment Errors : switch.port.receive.frame_error
Receive Overrun Errors: switch.port.receive.overrun_error
Receive CRC Errors: switch.port.receive.crc_error
Collisions: switch.port.collision.count
The Neutron Metering Agent sends network metrics via the rpc notification mechanism to Ceilometer. These notifications are gathered by Ceilometer for metering (billing) and monitoring purposes.
Progress So far
- I have been able to set up Neutron along with its plugins ( ML2, router, metering ) and agents (Metadata agent, L3 agent, Open vSwitch agent, DHCP agent, Metering agent ) on my DevStack setup.
- I've been learning to use the Neutron CLI by playing around ( creating Networks, adding Routers, adding interface to Router, adding gateway to Router, examining routers, understanding namespaces, adding rules to the default security group, attaching floating ip address to public network, etc).
- I am also learning to use ovs tools: ovs-vsctl and ovs-ofctl and have setup the following Switch configuration on my DevStack :
- I've set up Ceilometer on my DevStack ( yet to add switch meters).
- I am working on my patch to add port statistics to the metering agent and hopefully should be able to submit the patch by the end of this week.
I am grateful to my mentor Rossella for being extremely supportive and encouraging. I've learned a huge bunch of things and the whole journey is amazing.
That's all for now. I'll be posting soon on my progress further.
June 13, 2016 05:00 PM
A longish blog post, please bear, a second part of the blog post would be published in few days from now. My fixed visa finally arrived, yeah But this story doesn't start here, it starts about a year back. While I have been contributing to Debian in my free time over the years, and sometimes paid time as well, I had never thought of going overseas as the experiences I knew from friends and relatives, it isn't easy to get all the permissions and paperwork done to say the least (bureaucracy @ work). But last year, when Debconf 15 was being launched, there are/were 2-3 friends of mine who are studying, doing their Ph.D. in some computer/web stuff, living in Germany currently that they goaded me to apply. The first few times I gave some standard excuses, but when they kept on for a while, just to shut them up I applied to the debconf team applying for food, accommodation and travel sponsorship.
I didn't have high hopes as there obviously are many more talented peers around me who understand FOSS and Debian at a much more fundamental, philosophical as well as technical level than me. Much to my surprise though, about a month (and around two or three weeks just before the event was about to take place) I got the bursary/sponsorships for food, accommodation as well as travel. I was unsure that the remaining time was enough to get a visa hence declined that time around.
That whole episode gave me the confidence that perhaps my application would be accepted if I applied again. Using my previous years understanding, decided to give it a shot again as this would also enable me to get a feel of visa bureaucracy as well as gain a bit of novice understanding about what factors go in choosing a flight and believe me the latter part proved to be pretty confusing. While the visa business seems easy, the form at least is easy and what they ask, it can be troublesome as far as visa-processing process is concerned. It took a better part of the month to get the visa which I needed. The in-between time is and can be a bit stressful as you have committed funds for travel i.e. the airline tickets and are in a limbo as you didn't know that if the visa is cancelled for some reason, your tickets would be refunded or not. A little history is needed and hopefully is helpful for anybody who's applying for a short-stay Visa in South Africa.
Exactly, A month and day back I had applied for visa. The visa I had applied for is 17 days as the flights within my budget was for those days only. The visa I got was for 10 days only which was ending in the middle of the conference. I tried many avenues to get information and was told that I needed to write a correction letter telling/sharing the information about the correct time period and dates in BOLD with a heavier weight/point which is what I did and gave to VFS office without any further payment on my part. It took a bit more time than the first time around but the consulate co-operated. While I can understand the oversight as they probably get more visas requests along with special and urgent requests so such occurrences can happen. I am and was happy that there was a recourse rather than starting from scratch which probably would have made me more anxious due to the first experience .
Apparently I was lucky that I had done with Qatar Airways as later came to know that there are other airways which don't refund money even after visa rejection . This information I got to know pretty late in the game otherwise I wouldn't have been much stressed. As had committed knew had to go the whole hog and whatever barriers are there, have overcome at least as far as the visa part/process is concerned.
Now after few days, will probably start to worry about the actual travel, part nervousness, part excitement, nervousness as it will be an alien land, am obese so traveling economy on 787-8 and 777-300 ER will be tricky. The 787-8 will probably be a rough ride as it's a 9 hr. journey and the seat are a mere 18″, the cattle class as shared by one of our esteemed politicians. This blame has to do with Boeing 787 rather than anybody else. Hopefully, if there is a next time, would make better choices.
Anyways,have selected an aisle seat so that will be able to walk every hr. or so to get the circulation in legs going as leg room in economy is not much from my domestic air travel experiences. If I do survive the travel, then will see South Africa and try to get some free time and explore South Africa and try to figure out how are they able to get one and half time tourists while we get around half figure for a whole year even though we are bigger (area-wise) to South Africa. I did find something positive for us as well, it's not all doldrums all around.
Now, I had been thinking about if I know any South African music and movies. I had explored djembe while growing up in teens but other than that, not much. The only music I have heard is Harry Belafonte . So I hope to bring some Indian movies and music with me so that people if they have not explored Bollywood as well as Indian classical music could explore some of it, of course it will be pale imitation of what 'Sawai Gandharva Music Festival' for instance gives. I also hope to hear and get some music and movies to learn more about South Africa.
Filed under: Miscellenous Tagged: #bollywood, #Debconf Germany 2015, #Debconf South Africa 2016, #Debconf15, #Debconf16, #djembe, #South-African consulate, music, tourism, visaJune 11, 2016 06:55 AM
* અપડેટ્સ ટાઇમ!
* વિકિમીડિયા ફાઉન્ડેશન સાથે ત્રણ વર્ષ પૂર્ણ કર્યા. હું પોતાને જ અભિનંદન આપીશ😀
* કવિનનું રાબેતા મુજબનું શાળાજીવન કાલથી શરુ થઇ જશે અને અમારી પણ લેફ્ટ-રાઇટ શરુ. ચોથું ધોરણ કારકિર્દી માટે અત્યંત મહત્વનું છે. એટલે અમે આ વર્ષે ક્યાંય બહાર નહી જઇએ તેમજ મુવીઓ જોવાનું પણ બંધ કરીશું. શનિ-રવિ પણ સતત અભ્યાસમાં જ વીતશે તેમજ ઘરની બહાર 'અમારો દીકરો ધોરણ ૪માં હોવાથી મહેમાનોએ આવવું નહી' તેવું પાટિયું મારીશું (મજાક છે, પણ આવું પાટીયું સત્ય હકીકત છે, ખાલી ચોથા ધોરણની જગ્યાએ એ દસમું ધોરણ હતું).
* એક ખાસ ટ્રીપની રીટર્ન ટિકિટ લઇ લેવામાં આવી છે. વધુ વિગતો સમય આવ્યે.
* છેલ્લાં અઠવાડિયામાં સારી એવી ફિલમો જોઇ કાઢી, પણ રીવ્યુ લખવા લાયક એકપણ નથી.
* દોડવાનું સારુ ચાલે છે, સાયકલિંગમાં મંદી છે.
June 08, 2016 02:26 PM
* એમાં થયું એવું કે ઇન્સ્ટાગ્રામમાં પેલું મોજા વાળું એકાઉન્ટ ફોલો કર્યા પછી, રાત્રે હું ઢગલાબંધ મોજાં ખરીદતો હોઉં એવું સપનું આવ્યું. ચોમાસું ઇઝ કમિંગ એટલે કદાચ આવ્યું હશે. હવે, સાયકલિંગ-રનિંગમાં સૌથી મોટી તકલીફ ભીનાં-ભીનાં બૂટ-મોજાની રહેશે એટલે એક સારાં સેન્ડલ લેવાનું નક્કી કર્યું છે. જોઇએ છીએ, બજેટ છે કે નહી
June 02, 2016 02:08 PM
[Published in Open Source For You (OSFY) magazine, September 2015 edition.]
Continuing with our series on Emacs, in this article, let's explore basic buffer navigation, formatting, and help commands.
You can view a list of buffers in GNU Emacs using the C-x C-b command, and can switch to a buffer using the C-x b shortcut. The default list of buffers as seen in GNU Emacs 24.3.1 on Ubuntu 14.10 is shown below:
CRM Buffer Size Mode File . *scratch* 191 Lisp Interaction * *Messages* 485 Fundamental % *Completions* 264 Completion List % *Help* 1855 Help
In order to kill (close) a buffer, you can use C-x k key combination. If you have multiple buffers that you would like to close, you can use M-x kill-some-buffers command, which will prompt you for a confirmation for every buffer. You can also rename a buffer using the M-x rename-buffer command. If you would like to save the buffer contents to a file, you can use C-x s, and it will prompt you with many options before proceeding to save the file. You can also save a modified buffer using C-x C-s.
It is important to learn how to use the Emacs navigation commands instead of the arrow keys. When you learn to use macros, you will find it useful to automate steps. A summary of the basic navigation shortcuts are given in the following table:
Command Meaning C-f Move forward one character C-b Move backward one character M-f Move forward one word M-b Move back one word C-p Move to previous line C-n Move to next line C-a Move to beginning of line C-e Move to end of line
You can scroll down a buffer using C-v, and scroll up using M-v shortcut. If you would like to move to the beginning of a file, use M-< command. You can move to the end of a file using M-> shortcut.
In order to move the cursor to a specific line, use M-x goto-line or M-g g. If you would like to position the contents where the cursor is located to the center of the screen, you can use C-l. If you want to repeat a command 'n' ('n' is an integer) number of times, you can use M-n following by the command. You can also use C-u n, but, if you don't specify 'n' here, the next command, by default, will be executed four times.
You can delete a character where the cursor is located using C-d. To remove a word, you can use M-d. You can remove text from the cursor position till the end of line using C-k. The cut text goes into a kill ring buffer. You can paste whatever you have removed using C-y. You can cycle through the text that has been removed by repeatedly using M-y after C-y. Consider the text:
When you have a question about Emacs, the Emacs manual is often the best starting point.
If you place the cursor before "about" in the above sentence, and press 'M-d', it will remove " about". You can now see the value of the kill-ring using C-h v (describe variable), and it will prompt you with the message"Describe variable:", where you can enter kill-ring. You will see an entry for" about". Now, place the cursor after"question" and press 'M-d' again, and "Emacs" will be removed. If you again check the kill-ring value, you will see an entry for " Emacs".
You can now move the cursor to any location in the buffer, and press 'C-y', and it will paste "Emacs". If you then press M-y, it will paste "about" which was the text that was cut before "Emacs". This way, you can cycle through the kill ring buffer.
To select a region of text, you first need to mark the starting position with the cursor using C-space. You can then use any of the navigation commands to highlight the text that you want. You can either cut the marked region using C-w, or copy it using M-w. This will get copied to the kill-ring. You can then paste the text to any buffer. You can also select the entire buffer using C-x h.
Formatting text
It is good to have text within 80 columns and 25 rows (80x25), not just for readability, but, to avoid making any assumptions about the users' screen size. If you have a really long sentence or paragraph, you can reformat it using the M-q shortcut from anywhere in the sentence or paragraph.
You can transpose two characters using C-t shortcut. For example, if you have misspelt "emacs" as "emcas", you can place the cursor on 'a' and type C-t to swap the letters 'a' and 'c' to get "emacs". You can transpose two words using the M-t command. For example, if you have the phrase "morning good" in a buffer, and you type M-t anywhere on the word "morning", it will swap the words to give you "good morning". You can also swap lines and sentences using C-x C-t and M-x transpose-sentences commands respectively.
If you would like to capitalize the first character of a word in upper case, you need to place the cursor on it, and key in M-c to make the first letter capital. You can turn all those letters from the cursor location to the rest of the word into capitals using M-u command. For example, if you have the word "sentence", and you place the cursor on the letter 't', and you key in M-u the result will be "senTENCE". To make all the characters lower case, you can use M-l. You can turn the entire previous word into capital letters using the M - M-c shortcut. Similarily, to make the previous words either upper case and lower case, you can use M - M-u and M - M-l commands, respectively.
You can read manuals written in Info format inside GNU Emacs. When you type M-x info, it opens up a menu with the built-in documentation available from 'Info' files. The Info mode is mostly used to read hypertext manuals. You can use Tab and Shift-tab to navigate through the available links. Since the contents are in a buffer, all the basic navigation commands are applicable. To exit from Info, you can use q (quit).
You can press the return key on a link to open its contents. For example, when you click on "Emacs FAQ" it opens "The GNU Emacs FAQ" contents. The following are the sections listed in its buffer:
* Menu * FAQ notation * General questions * Getting help * Status of Emacs * Common requests * Bugs and problems * Compiling and installing Emacs * Finding Emacs and related packages * Key bindings * Alternate character sets * Mail and news * Concept index
Suppose, you hit the return key on "FAQ notation", it will open its contents with the title "1 FAQ notation". If you want to cycle through the headings at this level, you can press n (next topic) and p (previous topic). If you want to move one level up, to the "The GNU Emacs FAQ", you can use the u shortcut.
If you simply want to move to the topmost node ("The GNU Emacs FAQ"), you can use the t shortcut. For example, if you were in the section "3.1 I'm just starting Emacs; how do I do basic editing?" and you pressed 't', it will take you to the topmost section - "The GNU Emacs FAQ".
You can move to the previous node that you visited using the l shortcut. You can also explicitly specify the node you want to move to using the g shortcut. For example, if you are in the "1 FAQ notation" page, and you pressed g, it will then prompt you with the message "Go to node:". You can then type "Extended" and hit TAB to auto-complete to "Extended commands", which is one of the links in the page.
You are encouraged to try the built-in info tutorial available by pressing h in the "info" buffer.
You can read manual pages inside GNU Emacs using M-x man command followed by the return key. Suppose, you try this command from the scratch buffer, it will then prompt you with the message "Manual entry:". You can then input ls (list directory contents), and it will open a new buffer and window titled "Man ls" with the contents of the manual entry for the ls command.
From the scratch buffer, you can scroll forward the other window ('Man ls') using C-M-v (Ctrl-Alt-v), and scroll back using C-M-shift-v (Ctrl-Alt-Shift-v).
You can list all the available, active key-bindings using the C-h b command.
The C-h f shortcut is used to provide documentation for a function available in your installed version of GNU Emacs. For example, if you use C-h f, it will prompt you with the message "Describe function:". If you input scroll-other-window, it will open a new buffer and window titled "Help" with the description and usage of the function. The output as seen in GNU Emacs 24.3.1 is shown below:
scroll-other-window is an interactive built-in function in `C source code'. It is bound to <M-next>, C-M-v, ESC <next>. (scroll-other-window &optional ARG) Scroll next window upward ARG lines; or near full screen if no ARG. A near full screen is `next-screen-context-lines' less than a full screen. The next window is the one below the current one; or the one at the top if the current one is at the bottom. Negative ARG means scroll downward. If ARG is the atom `-', scroll downward by nearly full screen. When calling from a program, supply as argument a number, nil, or `-'. If `other-window-scroll-buffer' is non-nil, scroll the window showing that buffer, popping the buffer up if necessary. If in the minibuffer, `minibuffer-scroll-window' if non-nil specifies the window to scroll. This takes precedence over `other-window-scroll-buffer'. [back]
On the other hand, if you know the command, and would like to get help related to it, you can use the C-h k command. This will prompt you with the message "Describe key (or click or menu item):". You must key in the actual shortcut, for example, C-h b, and it will update the buffer "Help", and open it in a new window, showing the description for the shortcut as shown below:
C-h b runs the command describe-bindings, which is an interactive compiled Lisp function. It is bound to C-h b, <f1> b, <help> b, <menu-bar> <help-menu> <describe> <list-keybindings>. (describe-bindings &optional PREFIX BUFFER) Show a list of all defined keys, and their definitions. We put that list in a buffer, and display the buffer. The optional argument PREFIX, if non-nil, should be a key sequence; then we display only bindings that start with that prefix. The optional argument BUFFER specifies which buffer's bindings to display (default, the current buffer). BUFFER can be a buffer or a buffer name. [back]
You are encouraged to try out all the commands so that you understand what actions they perform. When you use GNU Emacs as your main text editor, you will be able to regularly practice these commands, and master them.June 01, 2016 05:45 PM
I have been thinking of doing a project in wearable electronics. Adding lights that blink on a skirt when I move seemed a good one to start. I had a white skirt lying in my cupboard. I got a Flora board, one Accelerometer/Compass Sensor and some LED Sequins from Adafruit. There are a few distributors of Adafruit in India. I got all of my stuffs required for this project from ProtoCentral. I also got conductible thread, a 3.7V Lithium Ion battery and a Adafruit Lipo charger to charge the battery from any USB port.
Before any stitching, I tested the board and the Accelerometer using jumper wires and a breadboard. I got an initial version of the code working too where the Accelerometer was sending the x, y and z values on the Serial Monitor in the Arduino IDE.
I stitched my circuit on the inner lining of the skirt. Here's how the circuit looks.
Here's the github link to the code that I uploaded on the board. I took the code mentioned on the Adafruit's Sparkle Skirt manual, but I had to make some changes since I was using LED Sequins instead of Neo-Pixels. LED Sequins are much cheaper than the Neo-Pixels and I didn't need the brightness and functionalities of Neo-Pixels. Also I adjusted the delay values and the move threshold values to make my circuit work.
And, after a long spell of procrastination and some more procrastination, I made the initial version. Need to add more sequins to this to make the lights more visible. Here's how the initial version looks like.
blinking skirt v1 from Satabdi Das on Vimeo.
Some learnings which are scattered in many videos and blogs on the adafruit website
1. You can not put more than 5 Sequins in parallel on a single Flora pin.
2. But if you use Neo-Pixels, you can put as many because they are chainable.
3. For 1 to 5 New-Pixels, use 2 Ply Stainless conductive thread. For more than 5 Neo-Pixels, use 3 Ply Stainless conductive thread. For more than 20, you should use silicone covered wire.
May 29, 2016 10:42 AM
I reached Portland two days back, was happy to see that Remy helped us to find a hotel just opposite to the conference center. As I am typing this, I can see the empty roads, and the main doors of the venue. Yesterday also I woke up by 5AM, the virtue of being in a place 12:30 hours apart from your standard timezone :) After writing the article about Microbit support in Fedora (it is still under review) I moved to the conference venue. It was very easy to find the staff room. As usual Doug,Lvh,Eric were already there, later I met Ewa, and then met Betsy for the first time. While discussing security practices when I asked, Lvh pointed out that getting golang vendored sources in the source code repository and then not updating them later, is more of a software engineering problem than a security problem as he sees.
Later in the day few of us walked towards downtown to get some lunch, and then we decided to visit Powell's again. Mike Pirnat gave some valuable insights about children books, and card games :) After coming back to the venue, we saw more people are coming in. Rami was the first person to meet, PyCon is really a great place to meet old friends. Later I met Glyph, Hynek, Guido, Harry, Mike Muller, Graham Dumpleton, and Yarko (I don't think I will be able to write down people's names like this from tomorrow, the list will be too long :D ). I also found PyDanny, and Audrey coming in for the registration. It was good see her walking around after the big surgery.
Guido pointed out the xkcd comics about the Python patch. The discussion then moved to regex, legal side of the software field. I also had a chat about how CentOS is helping CPython with CI effort. It turns out that Guido knew about CentOS, but never looked deep into what is that :) He was seems be happy about help CentOS is doing by providing the beefy boxes to do build+test super fast. I am actually going to talk about that today in the Language Summit.
Later at night a large group of us moved to a nearby Ethiopian place for dinner. The food was great, we had more people coming in for the next few hours. Ntoll also came in and joined our table. Came back to the hotel room around 22:30, and tried to sleep early so that I can wake up in time. Today I will be in the registration desk from 7AM just like other years, and then I will move into the Language Summit. See you all in PyCon :)May 28, 2016 12:46 PM
I read this book after my friends recommended it and wrote the following note at Goodreads
I am not rating this book. Not because of the book is bad. It is well written, I read it in a single day. But just that it gave me lot of pain and I would not recommend any of my friends to go through that pain. The reading can be felt very personal, like watching a friend – the author of the book – suffering. I had friends who went through very difficult illness and no longer with us. I have close relatives who is going through similar difficult time.
That is about rating and recommendation.
But, I am thankful to my friends who introduced this book to me. Just with some 100 pages, a friend appears in my life and leaves after a very short visit. Presenting lot of perspectives about the life and its struggles. Earns respect very quickly, and earns your tears towards the last pages. I literally skipped last few pages just because I did not want to.May 28, 2016 05:49 AM
Fear – That would be the single word I can use to describe my feeling after reading the book. My belief in Indian judicial and paraliamentary system is not a firm one. This book shakes it badly. I am nobody to judge the facts revealed in the book, but what make me afraid is there is very less chance that these facts are verified by the current Indian political and legal system.
Lot of respect for the author and her courage for this work.May 28, 2016 05:41 AM
ફોન આવે છે..
તે: હેલ્લો. સર મેં વોડાફોન કંપની સે બોલ રહા હું.
હું: સોરી. નોટ ઇન્ટરેસ્ટેડ.
તે: સર આપને વોડાફોન કા પ્રોડક્ટ લીયા હૈ ઉસકે બારે મેં બાત કરના હૈ.
હું: મેને કોઇ પ્રોડક્ટ નહી લીયા હૈ. સોરી.
તે: અરે સર, વોડાફોન નહી, વહર્લપુલ કંપની સે બોલ રહા હું.
હું: ઠીક સે બોલો ના.
ટૂંકમાં, આપણા કાન આ વોડાફોન કંપનીથી એટલા કંટાળી ગયા છે કે વાત જ ના થાય.
May 28, 2016 05:15 AM
* આજની કડી છે: How Neuroscientists Explain the Mind-Clearing Magic of Running
જોકે મારું મોટાભાગનું દોડવાનું એટલું બધું કંઇ પરસેવાજનક હોતું નથી, તેમ છતાંય યાદ રાખવામાં અને ભૂલવામાં બંનેમાં દોડવાનું શરૂ કર્યા પછી સુધારો તો થયો જ છે!
May 28, 2016 05:14 AM
Adding to the timeline, an article that was published two years back on opensource.com about internship stories at Red Hat where mine was one too!
Open source internships make great career starters -> https://opensource.com/life/14/1/open-source-internship-lessons-learned
May 27, 2016 11:19 AM
The public cloud services market in the country is projected to grow 30.4 per cent to reach USD 1.26 billion this year as organisations are pursuing a digital business strategy, Gartner said today. According to the research firm, public cloud services market, which stood at USD 968.1 million in 2015, will reach USD 3.52 billion by 2020.
Read More: http://www.financialexpress.com/article/industry/tech/public-cloud-services-in-india-to-reach-1-26-billion-this-year-gartner/249120/May 27, 2016 03:44 AM
Am currently in the visa no man's land (application given and awaiting result) for debconf 2016 which means it is the perfect opportunity to share whatever I have been learning about South Africa and drawing parallels with India.
I had a look at the Economy of South Africa viz-a-vis the one of India. I had suspected that South Africa would have mining as one of its assets as had seen Blood Diamond , the Leonardo DiCaprio conflict diamond story of Sierra Leone and had wrongly or rightly unconsciously juxtaposed it to whole of Africa, in this case partly right that mining is a big part of the export basket in South Africa. I had also assumed (wrongly this time) that there would be Oil or/and Natural Gas as that is also part of some African Nations export earnings.
Comparing between the two Economies there seems to be a large difference between people facing unemployment in South Africa versus India. While South Africa can boast of 35 percent of unemployment at the most, India is down at 70 percent unemployment but goes gain by a somewhat slower crime-rate than that of South Africa. I don't know the reasons, perhaps a social scientist or a behavioral scientist could tell the reasons for the same. It isn't as if we do not have crime, most crime is centered around the BIMARU states which basically is in a vicious circle of low education leading to low or no job skills at all to crime and so on and so forth. While efforts have been made to take them out of that circle, they swing back and forth due to social and political situations in those states.
The only place where India seems to be ahead (arguably Information Technology and apart from that) is public transport. India inherited a huge sprawling 66,000 odd kms. from the British when they left India which over the years has expanded to something close to 115,000 odd kms since then. As I am somewhat of a railway nut, I am looking forward to seeing and hearing on TV the trials of Spanish TALGO Train whose trials are expected to start today or any day now for India. For sometime now we have been using and experimenting with LHB Rakes with good results. If TALGO also gives us good results than we would be spoilt for choices and IR (Indian Railways) would have better days ahead. A good read on the subject would be an article which goes into the pros and cons of the Talgo trial and what it would mean for Indian Railways.
Even public transport in my own city seems better than the one in Cape Town. With over 1000 odd buses catering to around a million passengers daily with quite a few buses now having GPS tracker, it is possible that in few years, I would be able to stand at the Bus Depot and know accurately when a bus is supposed to come instead of speculating as of date. This would move significant number of people who have moved to private transport as they are unable to have deterministic predictable time of buses. It should also help us in cases buses break-down or something like that.
Another thing that came to my attention was the immense Feesmustfall initiative which happened in South Africa. Most educational institutes are owned by Politicians and even the Govt. ones are being slowly privatized which is going the American way. As I have already shared about pitfalls of privatization of education in the past not going to do that now. For those who came in late, see the latest Michael Moore's documentary 'Where to invade next' it does partly talk about education and what he says also makes lot of sense to a developing economy like India.
If my visa gets the go-ahead, I do plan to talk and observe as much as I can the local economy in Cape Town apart from being part of DebConf.
If you are somewhat of a railway and documentary/travel nut like me, some nice documentaries about Indian Railways.
and for those who would suggest me South African Railway (already seen) and Slow Train Through Africa: With Griff Rhys Jones, part 5 (seeing)
Another interesting bit of news was/is the amount of tourists that South Africa has been able to attract. This is where you have been way ahead of us, India has huge upside potential for all sorts of tourism but we end up doing end-goals and not respecting tourism (either tourists from different parts of the country or/and backpackers from other parts of the world or even the well-heeled sometimes.) I have also heard horrendous visa tales from people who have not been from developed countries and who are NOT from neighboring countries. I also hope to see some part of Cape Town to see how you excel in tourism and if there is anything we could do to replicate some of the success you have in tourism in our own country.
Lastly, another interesting data point was that South Africa shed almost half their intrinsic value against the US dollar ('10-'15) whereas India, slipped but at around 1/3rd of its value. At first glance, it seems lack of exports and lack of self-consumption market (like India has) may have contributed to the slide. I would also be looking into both the Political as well as Cultural aspects to have a slightly broader understanding of South Africa dynamics.
All in all, am excited to see what happens. Comments, suggestions are welcome
Filed under: Miscellenous Tagged: India, Indian Railways, LHB, south africa, Talgo, tourism, travelMay 24, 2016 11:25 PM
Your name (blog/twitter) and what do you do
My name is Tosin Damilare James Animashaun (IRC: acetakwas; Twitter: @acetakwas; Github: github.com/takwas, Blog: takwas.github.io).
I am currently a part-time Software Engineering student at NIIT, Lagos. I am also a co-founder at a startup called Krohx. We are in the final stages of deploying a job/hiring web platform that targets seekers of short-term jobs while also easing the process of getting service delivery for the hirers.
With my involvements with the burgeoning Python community in Nigeria, I recently got elected as secretary for the organization.
How did you learn about the training? (++ My Experience) I fail to recall
exactly how I learnt about the community now, but I remember joining the mailing list and going on from there. This was in fact my first time of joining a mailing list. Upon learning about the #dgplug IRC channel, I promptly enlisted the channel to my IRC client's favourites.
I was so enthusiastic about this, as I had no prior experience of an online tutoring session. The feeling was truly exhilarating.
Having come from a Java background, I was really interested in learning the Python programming language as soon as I caught on waves with. At the time, I had volunteered to write some scripts to help automate some of the manual processing of NIIT's annual scholarship exam records/documents at my school for that year. I accomplished that using Java, but in hind-sight, I feel I could have saved a lot of time if I had utilised Python in the situation.
This was a blog post I wrote as part of tasks given to us. I have failed to maintain that blog though. I now write here
How this training changed (if at all) your life? Python is surely the more
beginner-friendly language and it's making its rounds these days. Every programmer should have it in their arsenal. One of the things I love most about the language is it versatility in application.
No doubt, I have continued to improve with Python everyday, but more so in my programming journey. I have become more and more familiar with various mainstream concepts and tools. The idea of contributing to open-source can be overwhelming at first, but following the path laid out in this course, one would be surprised to learn how easy it could be.
I have volunteered to mentor attendees at a Django Girls workshop, which held in Lagos, Nigeria. I picked-up Django in a week prior to the event, because frankly, there wasn't much of a learning curve to it since I already used Flask, a different Python-based web development framework.
Flask was a framework I first got introduced to at the summer training, but I did not revisit it until months later. As a backend web-developer, I now do most of my work in Flask.
In my experience, there is no better or faster way to grow, than to collaborate; and that is what open source preaches. Note that growth here is not only about the project, but the growth applies to each contributing individual. Heck, even if you do not contribute, you will grow by reading good open-source code – this I can attest to. And joining the dgplug community has surely made open-source a more approachable endeavour. # #
Have you contributed to any upstream project(s)? If yes, then details.
While (and a bit disappointingly) I have yet to contribute to an upstream project, I do have quite a number of them lined up. Most probably, the first would be to the [official Slack Client]() written in Python. Having recently developed a bot, which was used in conducting the election of committee members of the Python Users Nigeria Group, I do have a number of changes I plan to push to the aforementioned API library.
With this forked project, I have also tried my hands at revamping the architecture of the official dgplug bot ekanora, which is used in running the summer training sessions.
Some other projects I'd like to contribute to include:
Any tips for the next batch of participants. (++Final words)
I am not sure I am in the best position to answer this. However, I would advise that you endeavour to remain focused through this; simply keep at it. Even if your experience at the summer camp doesn't go as you expect, you should definitely not count it loss. Instead, make it a reason to put in more effort and grow as you go.
Depending on your personal activity schedule, you might miss one/two classes. But that shouldn't deter you from continuing the program. The logs are available for covering such lapses. Also, you could consult the summer training docs to get a hang of the agenda, so you can anticipate classes beforehand and be better prepared.
While I participated in the training, there were times when there was no power supply, and I had to use my phone. Thankfully, there are IRC clients for mobile phones (I recommend AndChat).
The class sessions have a few rules, and the community would love it if you played by them. Not to worry, they are no stringent rules; just there to keep everyone behaving. For instance, the use of SMS-speak is discouraged.
You should keep notes beside you when attending the sessions. Writing is a good way to memorize things in my opinion. Also, although most clients would have this by default, you should ensure your IRC client is configured to log conversations. Going back over what you've learnt would do you great good as you mightn't be able to keep up with the speed of the class at times.
If you have some time before program begins, two things I'd advise you become familiar with are: - Your OS (Linux, preferably Fedora or Ubuntu) - An IRC client (I suggest HexChat)
I learned quite a lot from the summer training. I was really obsessed with attending whenever I could. Although coming from a different country, the timing wasn't favourable, often meeting me in the middle of the day's activities – school especially. I made efforts to invite a few friends to join on – one or two did, but the determination to keep on was obviously lacking, which reminds me of a statement I heard a while back that reads something like this:
"If 40 people begin a course like this together, only about 5 get to finish."
That in my experience is very often the case. Be aware that a lot of people are on this bandwagon. The question to ask yourself, is "Do I want to be among the surviving commutants at the end of this journey?" Unless you plan to experiment with this experience, if your answer is yes, then I congratulate you as you begin the journey that could potentially kick-start your software engineering career/journey.
Know this, free and open source software is for the good of all. The open source community is wide and continues to grow. It welcomes all and sundry, but it poses a few hurdles to sieve the wheat from the chaff. In the end, the gains are worth it.May 23, 2016 05:45 PM
For about a month and a half now, GTK 3.20 has come in Debian testing. While this is good as GNOME 3.20 was released about couple of months back it broke the themes that are in Debian. A bug has been filed for that .
There has been little in way of documentation about how to fix the themes which reminds me of how Pulseaudio was off-putting when it first came to most people due to incomplete documentation, the breakage and not knowing where to look to fix things or even look up unit-tests, functional tests to understand where the breakage was happening.
It does seem that the GNOME team dropped the ball on this release. A more interesting read of the issue can be seen in this bug thread . I especially like the answer that Michael gave which does tell how much undocumented it really is.
Although if you read Mathias MClasen's blog post it seems more or less in-line with how regular CSS web-development takes place, so pretty much in-line with GNOME's stated goals of making GNOME very much a web-development platform so more web-developers could write and support GNOME rather than having to learn C or some other language to write for it. This has been their one of the stated goals from long back, I think circa 2012 or even before.
I updated GDM3 both on my workstation and lappy on testing today. It was interesting to see this :-
gdm3 (3.20.1-1) unstable; urgency=medium
* New upstream release.
* Restore debian/patches/09_default_session.patch as we postponed the switch
to Wayland.
* Upload to unstable.
— Michael Biebl Wed, 20 Apr 2016 00:44:11 +0200
I love Michael as time and again he has shown he cares for users like us. He knows/knew that GNOME 3.20 breakage is bad enough and switching to Wayland which would have its own set of breakages and pain (as it has not been tested wide enough and there is no knowledge of what corner-cases might be.) hence he made the wise decision of postponing it. It is very much possible that in the near future he may put a GDM3 release in experimental for people to test and report what breakage might be with a way to get back in case it doesn't work, he has done for Pulseaudio in past when the changes could have breakages for users. Also I guess he will have the traditional X.org servers and display infrastructure around for quite sometime till most basic and intermittent corner-cases are fixed and most people upgrade. Let's see when that happens
Lastly, I was reading http://lwn.net/Articles/686502/ as well as http://blog.ometer.com/2016/05/04/professional-corner-cutting/ . Both of them make for some pretty interesting reading. Thoughts welcome
Update 24/05/2016 – Michael has shared his insight via email but till I don't get permission from him to put it on post, it's on hold.
Filed under: Miscellenous Tagged: #debian, #GDM 3.20, #GTK 3.20, #Technical DebtMay 23, 2016 04:07 PM
May 23, 2016 03:39 PM
Anyone who has written a non-trivial project using Autotools has realized that (and wondered why) it requires you to be aware of 5 different languages. Once you spend enough time with the innards of the system, you begin to realize that it is nothing short of an astonishing feat of engineering. Engineering that belongs in a museum. Not as part of critical infrastructure.
Autotools was created in the 1980s and caters to the needs of an entirely different world of software from what we have at present. Worse yet, it carries over accumulated cruft from the past 40 years — ostensibly for better "cross-platform support" but that "support" is mostly for extinct platforms that five people in the whole world remember.
We've learned how to make it work for most cases that concern FOSS developers on Linux, and it can be made to limp along on other platforms that the majority of people use, but it does not inspire confidence or really anything except frustration. People will not like your project or contribute to it if the build system takes 10x longer to compile on their platform of choice, does not integrate with the preferred IDE, and requires knowledge arcane enough to be indistinguishable from cargo-cult programming.
As a result there have been several (terrible) efforts at replacing it and each has been either incomplete, short-sighted, slow, or just plain ugly. During my time as a Gentoo developer in another life, I came in close contact with and developed a keen hatred for each of these alternative build systems. And so I mutely went back to Autotools and learned that I hated it the least of them all.
Sometime last year, Tim heard about this new build system called 'Meson' whose author had created an experimental port of GStreamer that built it in record time.
Intrigued, he tried it out and found that it finished suspiciously quickly. His first instinct was that it was broken and hadn't actually built everything! Turns out this build system written in Python 3 with Ninja as the backend actually was that fast. About 2.5x faster on Linux and 10x faster on Windows for building the core GStreamer repository.
Upon further investigation, Tim and I found that Meson also has really clean generic cross-compilation support (including iOS and Android), runs natively (and just as quickly) on OS X and Windows, supports GNU, Clang, and MSVC toolchains, and can even (configure and) generate XCode and Visual Studio project files!
But the critical thing that convinced me was that the creator Jussi Pakkanen was genuinely interested in the use-cases of widely-used software such as Qt, GNOME, and GStreamer and had already added support for several tools and idioms that we use — pkg-config, gtk-doc, gobject-introspection, gdbus-codegen, and so on. The project places strong emphasis on both speed and ease of use and is quite friendly to contributions.
Over the past few months, Tim and I at Centricular have been working on creating Meson ports for most of the GStreamer repositories and the fundamental dependencies (libffi, glib, orc) and improving the MSVC toolchain support in Meson.
We are proud to report that you can now build GStreamer on Linux using the GNU toolchain and on Windows with either MinGW or MSVC 2015 using Meson build files that ship with the source (building upon Jussi's initial ports).
Other toolchain/platform combinations haven't been tested yet, but they should work in theory (minus bugs!), and we intend to test and bugfix all the configurations supported by GStreamer (Linux, OS X, Windows, iOS, Android) before proposing it for inclusion as an alternative build system for the GStreamer project.
You can either grab the source yourself and build everything, or use our (with luck, temporary) fork of GStreamer's cross-platform build aggregator Cerbero.
Personally, I really hope that Meson gains widespread adoption. Calling Autotools the Xorg of build systems is flattery. It really is just a terrible system. We really need to invest in something that works for us rather than against us.
PS: If you just want a quick look at what the build system syntax looks like, take a look at this or the basic tutorial.May 23, 2016 10:19 AM
Two years back, in August 2014, we sent our boy, Aasim to a UWC. Two days back, on May 21, 2016, he completed his IB and graduated from MUWCI (United World College, Mahindra College, India). While we saw him changing during his time at MUWCI, and we had expected that he would, it was a pleasure … Continue reading From a boy to a man. Aasim graduates from UWC Mahindra College
The post From a boy to a man. Aasim graduates from UWC Mahindra College appeared first on Swati's Blog.May 23, 2016 07:06 AM
About couple of weeks back I posted a blog post about how the new regulations would affect us. Few days back a friend of mine sent me this YouTube link . Please see this video while I share a small anecdote with you about 20-25 years back.
During that time, I was a college student from a middle-class family. My college was half an hour walk from my home and I use to walk up and down to the college daily. I used to take various routes to reach the college as you become bored with one route daily. One of those routes used to pass through marriage halls. As a First year college student, I didn't need money much so used to carry around Rs. 10/20 – for having chai and some street food for friends. That amount used to go quite some distance in those days. Me and My friends saw many a movie @ Rs. 10/- Saturday morning movies by bunking college and we used to enjoy that like anything.
One day, I *think* it was a holiday and I was supposed to meet a friend who was living in college hostel or around that, while going, I took the route which went nearby the marriage halls. I should state that time I wasn't fat as I am today but was around 50-55 kg. as I used to walk quite a bit and used to be with friends so energy was dissipated all the time, the relevance of this statement will be known as I unravel the true story as it happened. While I was walking, I saw a young girl (maybe 3-4 years old) bawling her heart out. She looked from a well-to-do home from her clothes. I asked in my broken Marathi what happened and she said she lost her parents. I used the top of my lungs and asked if her parents are around. I asked her name and shouted 2-3 times using her name but of no avail. Then I asked as to where she lived. She said, just round the corner. So I gave her my pinky finger and went to the lane. The road on which these marriage halls are, there are many lanes which are in Z shape with most of them ending in a dead-end. So I took her and when we reached the dead-end she stopped and said this isn't it. I naively thought it might be one of the other lanes and one-by-one I went through all the lanes which had a dead-end. I had explicitly asked her and she said that the lane ended at her house. After just couple of lanes, she was tired and I had to offer to carry her. Somehow I carried her for couple of hours and when all the dead-end lanes were done, I realized that the girl was truly lost. A part of me wanted to leave her but I couldn't leave her like that. Using 90 percent of the money I had on me, we had a cold-drink each at one of the shops as she was thirsty as was I. I asked people around me that such a situation has arisen and what should I do ? I was told that my best bet would be to call the police station. I called up 100 number and probably the exchange transferred me to the nearest Police Station. I told the cop the situation and told them where I am. The cop answered, bring the girl and yourself to the Police Station and we will sort it out. I couldn't understand why the cop could not come and pick us up when I'm giving the address of the place. I had no idea of prank calls as well as the plight of the cops themselves as shared much later in Satyamev Jayate. It took me couple of hours as I had to constantly shift her, take breaks in-between and then start again. Finally after reaching the Station, they took my statement. Shortly afterwards the child's family also came. They were asked if they wanted to file any sort of criminal charges against me (which was a shock to me), as they didn't know me they let me go.
Now apart from my naive behavior, if the police had location-aware technology they would have known where I am speaking from (it was a land-line as cellular phones were unheard of that point in time.) From what little I have observed, the private and community maps (where there is a true community around mapping) are far-far better than the maps than the Government does. While we really should have and ask a 911 kinda service which connects to all sorts of law and order issues (domestic abuse, violence, bullying etc.) medical emergencies (heart attack or any life-threatening issues), Disaster relief (Floods,landslides etc.) . Such services can only rely when you have both public, community and private initiatives work together.
If mapping would only be something that only the Government and big moneyed people can do, it will lead to laziness, as sooner or later there would be monopolies or at the most duopoly in many of the places in India which would be bad for us.
Look forward to our countrymen to advise the country to give community mapping also some breathing space in whatever new regulation comes without resorting to heavy-handedness of licensing.
Filed under: Miscellenous Tagged: historical anecdote, location-aware, mapping, Mapping Policy, monopolies, naive, Open Access, regulationMay 20, 2016 04:23 PM
Kerala Technological University (KTU) published a draft syllabus for the third and fourth semesters of Electronics and Communication Engineering for the coming academic year. It raised widespread concerns regarding:
- The depth and vastness of contents
- The obsoleteness of contents
- Sequence of introducing concepts and the pedagogy involved
- FOSS friendliness
To discuss the matter and collect feedback from a wider academic community, KTU called for a syllabi discussion meeting at its office on 13th May, 2016. More than a hundred faculties from various engineering colleges in Kerala came over and expressed their genuine concerns, comments and suggestions. I got opportunity to attend the same.
The syllabi committee agreed to wait till 20th May, to receive more comments before they publish the revised draft by 25th of May. Theare collaboratively created document on the changes to be incorporated to the content of various courses can be found here.
Concerns on Electronic Design Automation Lab
As per the draft syllabi published, KTU plans to introduce a new course 'ELECTRONICS DESIGN AUTOMATION LAB' to its third Semester Electronics and Communication Engineering syllabus. Its well and good to familiarize the software tools needed to automate many tasks like design and simulation of electronic circuits, introduction to numerical computations, PCB Designing, Hardware Description using HDL etc.
Many pedagogical concerns were raised in the meeting about the introduction of all these diverse EDA tools as a single course. The need of the tools should be obvious to the students while they learn it. It was proposed that SPICE simulations should go along with the Network Theory and Electronic Circuits. Also Logic Circuit Design should be taught with the aid of HDL.
What is more of a concern is that the syllabus is not FOSS friendly. It clearly specifies some proprietary tools like MATLAB for numerical computation, analysis and plotting. It specifies PSICE for electronic circuit simulation and VHDL for logic design. This proposal would be like forcing every technology institute to buy a licensed version of these software.
The Govt. of India has an Open Source Software adoption policy. Kerala State Govt. too has a policy to adopt Free and Open Source software. As per this policy use of proprietary tools are allowed only when there are no open source alternatives. There are open source software like Scilab and xcos, Octave, Scipy and Numpy etc. that can be used for the numerical computation experiments specified in the syllabus.
Why FOSS adoption is important?
Teaching and learning should not be tool/product specific. Syllabus should be neutral and should not endorse a brand. The students should not be locked on to a specific vendor. The learners who wish to install the software and experiment further shouldn't be restricted by any licensing terms and high cost. It would otherwise encourage unethical practices like usage of pirated copies of software.
Development of open source software is through open collaboration. The algorithmic implementations are not black boxes as in proprietary tools. They are openly licensed for learning and modifications, for the enthusiasts. Learning an EDA tools should not end with the lab course. Students should acquire the skill necessary to solve any engineering problem that comes on their way using these tools.
There are MHRD initiatives like FOSSEE (Free and Open Software in Education) project to promote the use of FOSS tools to improve the quality of education in our country. The aim is to reduce dependency on proprietary software in educational institutions. FOSSEE encourages the use of FOSS tools through various activities to ensure commercial software is replaced by equivalent FOSS tools. They even develop new FOSS tools and upgrade existing tools to meet requirements in academia and research. FOSSEE supports academic institutions for FOSS adoption through lab migration and textbook companion projects.
Why not KTU collaborate with FOSSEE?
FOSS adoption might not be a very easy task. There might be a need for technical support to institutions and faculty members. KTU can collaborate with FOSSEE in this regard. They have created a repository of spoken tutorials for various FOSS tools for numerical computations, analog and digital circuit simulation etc.
Free software will have cost for training, maintenance just like proprietary software. But the learning curve can be smoothed through joint efforts.
If the tools and software used are open source, KTU can plan to create an open repository of solved simulation experiments, which can be continuously enriched by contributions from faculties and students. Hope KTU takes some steps in this direction as per the suggestions submitted.May 18, 2016 03:03 PM
This is a second post regarding my toaster contribution. I would like to share my contributions to toaster for 2.1 yocto release. Before I start my contribution, I would like to share that hob has been removed from bitbake repo. Hence toaster remains the "only" UI for user to trigger builds and what not.
For 2.1 below are my contributions:
1)Removed an API ( probably the last API of hob? ) from bitbake repo.
2) Worked on supporting unicode chars for project name.
3) Added an API to shut down and hence cancel the build. I really loved build cancellation work My sincere thanks to Ed, Michael and Belen for this work.
4) Updated UI for build cancellation.
5) Worked on excluding builds which are cancelled from the builds table.
6) Added support to include variable DL_DIR and SSTATE_DIR in project configuration page. This would help users to speed up the build. Because sharing cache and downloads folder speeds up the build time.
I sincerely thank all my toaster friends who supported me by verifying the patches I have sent. Nothing more to update.
adiós por ahoraMay 16, 2016 07:24 AM
એમાં એવું બન્યું કે ગુરૂવારે હું 300 રૂપિયા બચાવવા એક જગ્યાએ સાયકલ લઇને જતો હતો. આપણા ચાહીતા એવા એક રીક્ષાવાળાએ નક્કી કરેલું કે આ વખતે તો ખોટી દિશામાં જ રીક્ષા ચલાવવી. અને એજ વખતે તે સામે આવ્યો અને પાછો કોઇનો ફોન પણ આવ્યો. ઋષિ મુનિઓનું ધ્યાન વિચલિત થતું તો અમે કોણ? ફોન પણ વિચલિત થયો અને સાયકલ સાથે અમે સૌ કોઇ ધરતી રસાતાય થયા.
સારા નસીબે પપ્પાએ દોડાદોડી કરીને એક જ દિવસમાં ફોન સરખો કરાવ્યો. કોકીનો ફોન પણ ઠીક થઇ ગયો.
May 15, 2016 11:05 AM
Last Tuesday we had a Fedora 24 test day about Fedora Cloud, and Atomic images. With help from Adam Williamson I managed to setup the test day. This was first time for me to use the test day web app, where the users can enter results from their tests.
Sayan helped to get us the list of AMI(s) for the Cloud base image. We also found our first bug from this test day here, it was not an issue in the images, but in fedimg. fedimg is the application which creates the AMI(s) in an automated way, and it was creating AMI(s) for the atomic images. Today sayan applied a hotfix for the same, I hope this will take care of issue.
While testing the Atomic image, I found docker was not working in the image, but it worked in the Cloud base image. I filed a bug on the same, it seems we already found the root cause in another bug. The other major issue was about upgrade of the Atomic image failing, and it was also a known issue.
In total 13 people volunteered in the test day from Fedora QA, and Cloud SIG groups. It was a successful event as we found some major issues, but we will be happy not to have any issues at all :)May 12, 2016 12:00 PM
Hats of for making it happen in India again. Most of the information regarding conference available at web. Though i am using Gnome almost 10+ years, this is my first Gnome summit and also mine first conference as a Keynote speaker.
Day Zero
- Manav Rachana is big university with promising upcoming talents in the form of bright students. Its worth to making event Gnome Asia here.
- Excellent campus
- Workshop on first day was worth, Since i arrived late, attended last GStreamer workshop and that happened really in great depth. Excellent stuff from Speakers Nirbheek Chauhan and Arun Raghavan.
Day One
- It was good to see Gnome contributors on stage. Quick introduction from most of the members. University lead by excellent peoples. Talk from K.K. Aggarwal was really motivating. Loved some stories from him, specifically Frog one - Good to be deaf in some situation.
- Next Billion users for GNOME talk was good. Even i am sure with sandboxing, application will become platform independent and best one (most likely FOSS apps) will win Users. Amen !! for Next Billions :)
- Though i thought we are behind schedule but case was not that, due to good buffer in lunch time. Happy nicely handled by organizers.
- Here my talk started. As usual i tried to make it bit two-way rather than one way communication. Covered Indian language status and also covered how it can help to contributors specifically students.
Post lunch we started parallel session. Ankit Prateek had huge slide deck for "Privacy & Security in the Age of Surveillance ". He covered very important topics, i am sure after his talk many attendees must have thought for there privacy on Web 2.0 Era.
Later there was talk by "Functionality, Security, Usability: Choose any two. Or GNOME." He invited developers for contributions.
Thanks to PJP, Pranav for managing Fedora booth during first day. We had good crowd around and good communication whole day.
Day ended with lightening talks. In the evening i visited Tughlaqabad fort with Tobias, Daiki and Raju.
Day TwoThird day i arrived bit early, had good conversion with faculty and students. Ekaterina gave nice keynote and provided most of pointers for starting with gnome contribution.
After Tea, i remained at Fedora booth. Had good time resolving queries from new users. I think overall 6-7 students installed Fedora in 2 days, mostly on VirtualBox. They were asking what's are the feature of Fedora? and i was like what do you want? :)
During August Manav Rachana planning for activities on FOSS stuff and they were collecting contacts from speakers.
Post lunch, i attended talk from Ueno on "Contribute your first application to GNOME" and Tobias on "Five years of GNOME 3"
Then we had again nice lightening talks and closing ceremony.
Nice Swags
- University provided Momento and Certificated to all speakers.
- Also speakers received Micro Charge&Data.
- T-Shirts and Shoes from Conference.
Funny part was last year FUDCon 2015 we provided socks to participants and Gnome went ahead and provided shoes ;)
Fedora booth 2nd last day Pranav
ConclusionOverall Gnome Asia 2016 was good conference with good content and at right location. I hope we will get lots of contributors from Manav Rachana International university in coming years.May 12, 2016 07:29 AM
First and foremost the Rice and veggies recipe (This is for 2 persons) :- Ingredients :- 1. 150 gms. Rice (Best is Basmati whole or whatever rice you have) 2. Onion cut into small pieces (1/4th of onion is enough.) 2. Cut into small pieces all Veggies (Anything goes, at the simplest ladyfinger,Capsicum) 3. Salt […]May 11, 2016 05:15 PM
It's been 22 years to our marriage. Over the years, we have had many adventures together. My wish today is for us to keep having fun all our lives after all, YLOO – You live only once. No, not YOLO. Right, Aasim? 😛 Thanks for the lovely gift of the Surly Long Haul Truker, I … Continue reading I couldn't have asked for more!
The post I couldn't have asked for more! appeared first on Swati's Blog.May 11, 2016 07:44 AM