Showing posts with label perseverance. Show all posts
Showing posts with label perseverance. Show all posts

Monday, October 27, 2014

Rails Rumble is Over, Back to Code

Rails Rumble is officially over, so I can get back to working on my FML app. Unsurprisingly, I wasn't able to complete it in the ten hours I had to work on it after work each night during the competition. I've given myself until the end of October to finish at least a decent MVP.

Here's where I am right now: https://secret-inlet-5715.herokuapp.com/

I'll keep chugging away and I'll check in from time to time. Soon I will have some posts about the SeaGL conference last weekend, as well as my talk! (It was a first talk, it was a first talk, it was a first talk... ;) ).

Monday, September 29, 2014

Just Ship It

Last week was a bit of a whirlwind. I slammed through most of my backlog in Skillcrush's Web Developer Blueprint course and published two (imperfect) sites:


The url for this site is about to be swiped for my Rails Rumble submission. I'm open to ideas for a better (more fitting) name for this brainstorming site. Also on the to-do list is to get set up with asset hosting on AWS so that the images uploaded along with the ideas will be saved! (Image storage on Heroku itself is strictly ephemeral!)

and...



This resume-splash page was for an assignment on Skillcrush. I've got two main to-dos for this site. First, optimize the image better so that the background isn't so slow to render. Second, it looks terrible on a mobile screen in portrait mode.


I need to figure out how to tell the css to drop into a different mode when in a really small screen.

I'd like to continue my streak and ship another page this week. Not sure what yet (likely a starter page for my SeaGL talk this month.) Finally, I'm throwing in my hat for Rails Rumble - registration starts on October 6th and I'm super stoked to be a part of it this year.

Oh, yeah, and I've got my "day" job at [company name retracted due to uber-restrictive social media policy].

It's going to be a great week!

Edited to add:
I completely forgot! I also (finally!) got around to signing up at exercism.io I've just started but it's so much fun! :D

Wednesday, September 17, 2014

What a Summer it Has Been

This is a difficult post to write. I started this summer excited by my new OPW internship and anxious to get started. It began with a lengthy project map

The following enhancements are needed to allow storing and rendering of time-based information in OpenHistoricalMap.

1. Enhance the iD and The_Rails_Port so that a javascript time/date slider can be added to control the time period that is of interest.

2. Enhance the ID and The_Rails_Port so that meta-data hooks are added to the code that allow for custom deployments of both software. The intent is to support their use as dedicated user interfaces to certain applications (such as medieval walking path editing) while still using a generic data source.

3. Modify the Mapnik tile renderer to handle Key:start_date and Key:end_date.

http://wiki.openstreetmap.org/wiki/ID

and an ambitious proto-developer.

The goal of the project was/is, essentially, to put a time slider on a fork of the Open Street Map to enable users to search for historical maps that have been loaded into the system.

My original OPW proposal was ambitious and reveled my inexperience. As I worked through the first part of the project and then moved on to tackle the tile renderer, I began to understand the reactions of more experienced developers who I shared my work with. Still, I strove on (see logs).

In the end, I suceeded in integrating a timeslider into the OHM and in propagating a time variable throughout the tile renderer. I've also learned a great deal about how real-live applications look and I've picked up some C, as well.

I plan to continue contributing to the project. As my internship time ended, I was still working on building a working test server. I've had some hardware issues but expect to be able to begin working (part-time - I need paid work, too! :) ) soon. After the initial time variable is proven to work, I will then be able to introduce the actual keys to the render.

I would really like to see my code make it into the wild and it's a great mission. I've learned a lot about how real-life Rails applications work (look, Ma, there's business logic in the JavaScript!). I've learned even more about how far off paper time estimates can be from reality. ;)

Monday, August 11, 2014

Time Flies Like an Arrow and Fruit Flies Like a Banana

That's my new little motivational mantra. Someday, I will help create a computer that understands that sentence.

Back in the present, though, here's a run-down of what I've been up to in the Open Historical Map project:

Week 11: July 28 - August 3[edit | edit source]

  1. We're jumping into the rendering now. Most of the work will be in ohm_mod_tile, especially renderd and the master daemon program.
  2. I posted the IRC log here (tried to strip out the filler /leave, /join, etc)
  3. RENDERING
    1. This file is proving vital but elusive: home/tim/ohm-carto/ohm-carto/mapnik 2008.xml (UPDATE: I have the file now, but...)
  4. The bulk of the renderer is written in C and C++ (with a lot of Bash and some inline SQL for good measure.)
    1. I am v e r y s l o w l y and carefully modifying the renderer to accept the {t} parameter. It's been many years since I've even looked at C code (and that was in an introductory C class.)
    2. I'm relying heavily upon the 'git grep' command (tracking here).
    3. I'm logging my progress so I can keep track of what I've changed and where: git diff log.
  5. I don't want to lose this reference (is this Momento?):
    1. on line 245 in mod_tile.c, ~~bzero~~ recv() (bzero is used to zero out the bits at &resp to prepare it for the map tiles) and sends &resp to get the tiles from the database over a websocket
  6. I am really deep in the weeds here in C. I am going to take a little time to read up more in the man pages and go through some more of the tutorial over on Learn Code the Hard Way

Week 12: Aug 4 - Aug 10[edit | edit source]

  1. Made some changes to my changes (meta!) to the renderd.py byte packing/unpacking directive.
    1. IRC log on discussion here
    2. updated diff log here
    3. link on languages and urls from Chippy
    4. link on parameterization of mapnik tiles from Chippy
  2. The OHM Team had our monthly Google Hangout notes
  3. Re-attempting to install dependencies to run test server, instructions here for Mapnik and here for mod_tile
  4. After much searching (and an upgrade to gcc, I finally got it all running well enough to attempt to compile.
    1. Sadly, MediaWiki's spam filter is preventing me from posting a link to the very helpful blog that walked me through the task of upgrading my C/C++/Java compiler. If you visit charette.no-ip.com:81/programming/2011-12-24_GCCv47, you'll get to the instructions.
  5. I am now working on fixing the massive list of warnings and errors that running make generated for me!

Tuesday, August 5, 2014

Some Bits on Binary Packing and Holding Broken Packages

The first part of my day was spent on binary packing in Python. When using this feature to share objects between languages, you pack the structure/object into binary and deliver it with instructions for how to parse or unpack it. The format of the instructions will look something resembling this:

self.fields = "5i41sxxx"

where the structure is comprised of 5 integers followed by a 41 bit string followed by 3 null bits added for padding to make the structure add up to a total of 64 bits. My current task on the OHM was to add the {t} variable to this binary structure. Misunderstanding, I added the length of the 5 bit string to the existing 41 bit string. However, I learned that, unlike for the 5 integers, 46s would be treated as a single 46-bit string (logical but not obvious to me at the time). Instead, we opted to insert a second 5-bit string before the padding (which was increased to a total of 61 to increase the size of the binary structure to a nice, even 128 bits.)

Later that day, I spent a lot of time searching for solutions to an installation problem I was having. My updater was howling about need to update the firmware. My initial attempts were met with a strange error about having "help broken packages" (which drew up a most disturbing mental image). After lots of searching, I finally found a helpful post on AskUbuntu which described in detail the steps needed to clear this error. After typing:

sudo apt-get install xserver-xorg-lts-precise
hwe-support-status --verbose 
sudo apt-get install linux-generic-lts-trusty \
xserver-xorg-lts-trusty libgl1-mesa-glx-lts-trusty \ 
linux-image-generic-lts-trusty

TBH, though, I kind of wish that I hadn't updated because now Spotify won't run in my browser and the delete key fails on a long press. Google's suggested search when searching straight out of the address bar is malfunctioning as well. Something good will come of it, though. I'll have some fresh learning to write about tomorrow night!

Tuesday, July 29, 2014

Progress and More to Come

We made some progress over the last two weeks. We've got the time query running through the software, all the way up to the point requesting the tiles. Now we're diving in to the code of the renderer and tile server to get those tiles that we need!

Week 9: July 14 - July 20[edit | edit source]

  1. After some discussion and direction from my mentor, I'm tackling the tile rendering server bit. I've added a test layer for "Year" in the leaflet.osm.js file.
  2. I've got a first little skeleton in the code but it doesn't lead anywhere yet. I updated the issue tracker in GitHub with my latest and (not so) greatest.
    1. The screenshot is also posted here
    2. As can be seen by the mostly empty layer on the right, I've got most of the plumbing in there but there's no data coming through the pipes.
  3. Digging further into Leaflet and how to use it and I also put up a white flag for assistance in the issue thread above

Week 10: July 21 - July 26[edit | edit source]

  1. At the beginning of the week, I felt a little discouraged after seeing this postin the mailing list about how nomoregrapes built a working slider over an isolated OHM map during the Hackathon at SoTM-EU. I went through thecode he posted on GitHub and linked to it in the GitHub OHM issues tracker.
  2. After a lot of hacking and many false starts (and some help from my mentor), by the end of the week, I found the proper places in the code to add references to the {t} value for searching. My commits and code.

In less positive (and more personal) news, I got word that I was not accepted for the next cohort of the Ada Developers Academy. Keep looking here because after my OPW internship is over, I'll post my progress on my work for the GitHub data challenge!

Monday, July 21, 2014

In the Weeds

I've been spending the last few days in the weeds of Leaflet. For the full play-by-play, you can see the GitHub issue.

My Very Frustrating Day

Wednesday, July 16, 2014

Fastest Summer of My Life!

Time seems to be moving faster and faster. I can hardly believe it's time for another two-week report! I spent a lot of time chasing bugs but I'm making baby steps forward and learning a lot about how Rails and JavaScript work in live code.

Week 7: June 29 - July 5




Week 8: July 6 - July 13

  • And the code I've written was deemed not yet ready for prime time - it only works halfway at this point. I will resubmit after I get the code up to production standard.
  • After some useful feedback on the importance of submitting a pull request with only one commit (and some pointers to how-to's on rebasing to make that happen) and the helpfulness of of including *lots* of screenshots showing the software in action, I closed the pull request.
  • One (!!) of the aspects of this project that I have found especially challenging is finding my way through the blending of JavaScript and Rails code. I spent an inordinate amount of time this week chasing down what turned out to be a Javascript syntax error that was manifesting as a Rails error.
    • I've installed the "better_errors" gem to try to assist with errors like this - it will presumably be triggered if it is a true Rails error
    • I've also learned that if I make changes to the JavaScript portions of the code, I have to restart the server in order to see any changes. Most changes to the Ruby code automagically propagates without restarting the server.
  • Screenshots of my progress so far are on GitHub. Searching by year (2008 and 2009) will bring up the Burning Man map layers for those years and recenter the map to that area. Searching by any other year brings up with message that this is a work in progress. (It no longer crashes the map and brings up the dreaded Rails error screen, so there's some progress there!)


Saturday, October 5, 2013

I Am Going to Code Today

I just finished writing a post entitled "I Did Not Code Today," but a "network connection" error on my phone stopped the post from publishing. As it sat there in my notifications list, it seemed liked a second chance to end today on a really good note.

So, here I am, blogging instead of coding. Time to pull out the keyboard and get to work!