Displaying 1 - 5 of 10 entries.

Relaxation with Meditation and ASMR

  • Posted on July 26, 2014 at 12:00 pm

Over the last few years I’ve started to adopt some practices to help reduce the impact of stress in my life. One such practice is daily meditation. I had meditated occasionally in the past but it wasn’t until I attended a meditation group with my partner a few years ago that I started to make it a more routine practice.

Two of the tools that helped me expand my practice were the books Mindfulness in Plain English by Henepola Gunaratana and Zen Mind, Beginner’s Mind by Shunryu Suzuki. They helped me explore both mindfulness and Zen meditation styles. But even with all those resources I sometimes sought out guided meditation videos on Youtube to help me relax. It was through this searching, combined with a short-lived interest in binaural beats, that I came across the following video by Youtuber Ephemeral Rift.

That was my first experience with the phenomena known as ASMR (autonomous sensory meridian response). I had experienced it many times before then but I didn’t have a name for it. It was the relaxing, pleasant tingling sensation I’d feel in my scalp whenever someone was paying close personal attention to me, such as going to the hair stylist or seeing a dentist, as long as no drills were involved.

The idea that a simple Youtube video could have such a profound relaxing effect was amazing. How it worked was simple even: certain sounds, when listened to with both ears, or binaurally which is why I found it in the first place, can trigger ASMR. My list turned out to contain triggers such as whispering, crinkling, water being sprayed, and hair being brushed to name a few.

There have been a few psychological studies to study this phenomena, some of which I have participated in. If you want more info on one such study you can click on the ASMR link above to an ASMR research site or you can check out this ASMR research Facebook group. I’m looking forward to reading some of the theories regarding this phenomena and its potential social origins.

Rhythos RPG Builder – Continued

  • Posted on November 8, 2013 at 10:00 am

I posted earlier about Rhythos RPG Builder: a project by David Maletz of Fancy Fish Games. The Kickstarter did not meet its goal but it did get something just as valuable out of the whole experience: a community. As I will touch on in a later post building community is one of the top priorities for any free software project. It’s the community members who drive the development and improve how the software functions. With a strong community a project can thrive. Perhaps in the future, thanks to the hard work of this growing community, a future crowd-funding attempt will be successful and Rhythos can jump forward as a major player in indie RPG development.

I have interacted with the community a few times on their IRC channel and they have been very welcoming and openly supportive. I would definitely recommend trying Rhythos out as the platform for creating your next RPG. I had an idea bouncing around in my head for a game that I was originally learning Ren’Py to produce but rather than that I decided on using Rhythos. Once it finally gets to a demo-able point I’ll write something up about it and post  a detailed review of Rhythos and my experiences with it.

As Steam is preparing for a very strong GNU/Linux push with their Steam Machines and SteamOS announcements it will be good for projects like Rhythos. But, more importantly, Steam needs projects like Rhythos. Not in the traditional sense but rather in the context of software freedom. If projects like Rhythos thrive then it becomes easier to develop games that are also free software. While a platform like Steam is good for GNU/Linux overall (particularly in driver development and support) the main concern is that more proprietary software will find its way to the operating system. Most of the games on Steam are proprietary and the client itself is as well.

Rhythos may allow for the development of proprietary titles but that is akin to scientific research. As Richard Feynman mentioned: The ability to do something is worthwhile. Whether or not the tool is used to unlock the gates to heaven or hell is up to those who use it. In this regard Rhythos is in-line with the FSF’s explanation of when to use LGPL for your library. There exist many proprietary game-creation suites and Rhythos provides a free software alternative. This is in contrast to the project I am working on for my research which we were originally going to license under the LGPL but when I read the description I came to the conclusion that the GPL would be more fitting since we’re providing unique functionality (and, additionally, free software is very much in line with the spirit of academic collaboration).

OPW Wrap-Up

  • Posted on September 27, 2013 at 4:41 pm

My summer internship with GNU Mediagoblin, as a part of Gnome OPW, officially came to an end on September 23rd. I would like to thank Chris Webber, my mentor, the Gnome Outreach Program for Women, and the GNU Mediagoblin project as a whole. It was an enlightening, fun, and stressful summer.

Summer Accomplishments:

  1. Installed and setup a Jenkins continuous integration server for the project at http://testing.mediagoblin.org.
  2. Wrote a automation framework and several tests using Selenium, available at https://gitorious.org/mediagoblin-automation/mediagoblin-selenium.
  3. Patched the unit testing code to run significantly faster (available since GMG version 0.4.1).
  4. Wrote a comment preview features (available since GMG version 0.5.0).
  5. Wrote a manual functional test suite and instruction wiki page, available at http://wiki.mediagoblin.org/Manual_Functional_Testing
  6. Helped with bug triage.

It took writing this list out for an OPW IRC meeting for me to realize how much I had done this summer. Before doing this I had been constantly worried that I wasn’t doing enough or that the quality of my work was low. All throughout this Chris Webber acted as a nice stabilizing, guiding, and reassuring force. I think that’s one of the big barriers in getting started with free software contributions: imposter syndrome. It’s the same kind of issue that I’ve experienced as a graduate student, where imposter syndrome is very common. It’s hard to really wrap your head around how great some of the work you are doing really is especially when you are really excited about the project and have built up some kind of grandiose representation of it and everyone involved in it.

Everyone was new to the project at one point; even the creator and often they tend to carry that with them in the form of helpfulness and humility. That’s not to say that you can’t have bad interactions or that this self-knowledge doesn’t fade. Rather that you are working with people when you contribute to a free software project. Sometimes its nice to remind yourself of that.

My work with MediaGoblin is not over. As of right now I’m on my way to the GNU 30th Anniversary celebration and hackathon. Even extending beyond the near future I’m planning on looking into load testing for the project as it gets closer to its 1.0 release.

Akashic Record

  • Posted on July 29, 2013 at 4:28 am

What is the Akashic Record project?

The Akashic Record FOSS project aims to collect and maintain data and media to make it more accessible, usable, and manageable. With the increased availability of computing power and large sources of information there still is a great need for increasing ease of use. I have wanted to work on this for nearly a decade; mostly as a method to organize the large collection of my own personal documents and media. If I am looking for information on a specific event or phrase that I may have mentioned in the half-decade’s worth of chat logs, e-mails, or documents I have I don’t want to search each data type individually. Even looking up keywords is inefficient as I could be misremembering how the topic could have come up or what words I used to refer to it.

You can come chat with the project at the #akashicrecord channel on IRC at irc.freenode.net or check out the project at Gitorious.

Other News

I’ve purchased a domain for the project at akashic-record.org (which currently does not point anywhere; I will eventually work out exactly what I want to do there in the coming weeks).

I am also working on a logo for the project; more on that later.

Currently in Development

There are a number of pieces of the Akashic Record that are currently in active development. I’ve listed the most active items below.

Akashic Archivist

While I was thinking about how I intended to archive large amounts of content even from the parts of the public web that I am interested in I came to the realization that rate limits and bandwidth caps might actually become an issue. To alleviate this I decided to split off the archiving function into its own independent module that I’ve dubbed the Akashic Archivist. This will allow anyone to run an Archivist node (either independently or as a worker node for a primary Akashic Record instance).

In particular I thought that it could be a good use for a Raspberry Pi. Add a portable 1TB hard drive with an external power adapter and a small USB wall-wart and you have a low power archiving node ready to send out to a friend or family member. The archivist node operator would be able to set the maximum monthly bandwidth as well as a maximum transfer rate per second and a central node could request that specific places be archived by that archivist node. Then node operators could make user of the sneakernet and its wonderfully available bandwidth to transfer the data to the main node. While mailing out a hard drive concerns me somewhat there are other options for the storage media (like two 128GB USB drives) that are a bit more rugged.

Currently the only method of archiving will be in “Raw Mode” (get everything you see, save it all verbatim) which is going to be very costly insofar as space is concerned. I will likely compress all archived data and media to save on space but then I may need an alternative solution for hardware to avoid the processing bottleneck. Later when other formats are developed (see: data architecture) the archivist will be configurable to only use a select few formats although that might also require a lot of processing power (if tagging / context / OCR is included).

This item is in the “Akashic Recorder” repository under the project (no code committed publicly yet as of this posting).

Daughter of Mnemosyne

Pidgin's logo

This is my main focus right now since it’s going to be immediately useful to me. It is a libpurple plug-in that creates a chat-bot that can be accessed from across any supported protocol (I plan to use XMPP and IRC myself). This chat bot will give anyone access to the public items from my data collection through a series of simple commands (formatted for chat or linked to a temporary document). In addition it will have an authenticated part that allows specific users with certain levels of access to access various other pieces of data including system status and maintenance functions for my server. The private, personalized access functionality is planned to only work during on-on-one communication; potentially with a dependency to Off-the-Record Messaging. I’m still up in the air with this.

The name for this comes from the Greek personification of memory, Mnemosyne. It’s apt considering the name of the project which refers to a shared memory for the entire human race.

Data Architecture

So far I have not settled on any particular data architecture for the main system but I do know that I want it to be generic and abstracted away from the pieces of software that could request information or media from my collection. It needs to be able to accommodate most of the prevalent digital formats available on the Internet without adding too much overhead as the large amount of links each item could have could cripple it.

If anyone has any recommendations for good data architecture references / books or specific FOSS technologies that would be good to look at I’d love to hear from you.

Storage Solutions

I’ve been exploring many different storage solutions from rack-mounted SAN setups, NAS arrays, and commodity PC clusters. The most important aspect of my choice here is to make sure it is both cheap enough to start a base system now as well as able to scale to to my future storage needs. This has been more challenging than I had expected when thinking about all the storage I could potentially need depending on how I save, version, and tag pieces of information and media.

Setting up a large amount of storage would be simple enough but I need to make sure to have a redundant system, especially as my data collection grows.

Testing in Free Software

  • Posted on July 26, 2013 at 12:00 pm

Testing: that horrific phase under the traditional model of software development that gobbles up 80% of the total cost of the project. It remains a formidable part of the development process even under models with more flexibility. Requirements can change. Entire libraries or branches can be abandoned. With all of this instability there comes a need to build up a robust and reliable testing suite to make finding bugs easier.

Testing is not without its stigmas and difficulties but through all of this it remains a very important piece of developing a piece of quality software. In free software projects it does double duty by both increasing the quality of the project as well as offering up a quick and easy way for new contributors to get to know a project without diving headfirst into a large code base.

Starting work on an existing, complex free software project can be very intimidating. This is something I’ve known for some time and hasn’t really improved much even as my skill set gets broader and my knowledge base deepens. Software can easily become complicated especially if it is finely tuned. This is something that builds up over time as I have confirmed by working on XUDD, another project by Chris Webber that started recently which I will post about in more detail at a later date (you can also check it out on my projects page). Prolific commenting and good documentation can help alleviate this issue to some degree but that doesn’t change the fact that there are often thousands of lines of code to look through with varying levels of coupling between each other that may not be entirely apparent.

This places a barrier on contributions including contributing unit test code. While unit tests are generally not as complicated to design when testing a specific function or piece of the software they still require that you have access to and some understanding of the code (thus why they are traditionally called white-box tests). An alternative automation solution, one utilized heavily by QA teams around the world (who often have zero code access), is automated functional testing (or black-box testing). This is one of my main contributions to GNU Mediagoblin under the OPW program this year. Not only am I creating a set of automation functional tests but I am also creating the wrappers (make, shell scripts, etc) and continuous integration services needed to make use of them effectively. By writing easy-to-understand documentation along the way I’m opening up a doorway for new contributors and even putting automation in the hands of the end users. The software we are using, Selenium, requires basically no knowledge of code to use. When using the Selenium IDE within Firefox a user can quickly and easily perform the actions needed to reproduce a bug and with a small amount of reading they can figure out which attributes to add in Selenium by right clicking on the web page itself.

This is good for non-technical users as well as new contributors who want to start writing patches since to write effective and useful functional tests you need to grow an understanding of what it is exactly that the software does. It’s one of those pieces of information that can readily fly past you as a new contributor if you weren’t already a prolific user since you can get so fixated on how the software works. Since I wasn’t a user of Mediagoblin before  I started working on it and sending in patches I know this was the case for me and has been the case for several other projects in the past (including Testlink, a test management software I used prolifically to manage automated load tests attached to specific test cases).

The added benefit of automating a functional test is that it behaves similar to a user and uses the same tools a user would use to view your program (either the web in the case of Selenium, the command line as with the Expect automation tool, or a graphical user interface). This can help catch bugs or regressions (bugs introduced into existing functionality that worked under a previous build) that unit tests might not be able to catch since functional tests cover the software as a whole.

I know that my experience as a tester has shaped my software development in such a way that I am more careful whenever I am producing anything that could potentially be considered user-facing (scrubbing input, error handling, etc).