Threads for Linell

  1. 6

    If you’re using vim, tpope have some excellent plug-ins, especially:

    https://github.com/tpope/gem-ctags

    With a couple of other gems,it allows seamless “go to definition” for methods that originate from gems. Very valuable when trying to reason about code and dependencies.

    https://chodounsky.com/2016/12/09/using-tags-to-browse-ruby-and-gem-source-with-vim/

    1. 2

      This is helpful, thank you for the links!

    1. 6

      I internalize the story as an argument for pager duty and on-call support roles.

      The problem that upper management faces is that QA can be kind of bad and is reflected in the large scale metrics on customer impact. The cost of bad QA can absolutely be real to the bottom line but not evident in the people in the process. Either you pay it in customer support, reputation, or a user exodus. In this way, it’s no different than what I work on where services or products sometimes go down.

      The solution they created is actually like a system status pager duty. When a detectable error occurs, manual intervention occurs. This applied pressure to certain people in the pipeline to deal with the issues. It sucks to shutdown a processing pipeline and might even be not cost effective, but it forces the pain onto an internal individual instead of your external customers. I.e. we should be catching these problems before our customers realize it’s a problem. Along those lines, while I hate pager duty and on call support roles, I think I’ve also felt empowered to fix some of the worst parts of our system because I now have a concrete goal with my work, to reduce my pages. It turns out necessity ins the mother of invention. I end up solving problems when those problems are on me.

      1. 5

        Along those lines, while I hate pager duty and on call support roles, I think I’ve also felt empowered to fix some of the worst parts of our system because I now have a concrete goal with my work, to reduce my pages. It turns out necessity ins the mother of invention. I end up solving problems when those problems are on me.

        I’ve found this true as well. It’s easy as a developer to become isolated from the actual code that you’re writing, even at a small company. Sure the bugs bother you and you fix them as quickly as you can, but for me at least that always feels pretty abstract. Being forced to deal with an actual customer’s real life problem that was caused because you were being a little lazy one evening two months ago is an eye opener.

        3.5% of today’s users experienced a minor bug

        feels a lot less impactful than

        Jan in Brooklyn is having trouble putting in her data because someone broke the uploader code and she really needs it done by the end of the day because she’s got a big meeting tomorrow and needs to present the results.

      1. 1

        I’m in to help with Phoenix or Rails applications, or I guess Elixir or Ruby in general!

        1. 1

          I’ve been thinking of doing the same thing myself, so open sourcing the pain points sounds like a great idea to me!

          1. 3

            I really enjoyed reading this!

            It made me realize that I need to spend a lot more time learning Elixir itself and familiarizing myself more with how Phoenix works. I learned Ruby itself pretty well years before I really touched Rails and I think that’s helped me a lot with understanding the how and why of some magic, but I haven’t taken the time to do the same with Phoenix.

            1. 10

              Putting the finishing touches on a version of www.literature-map.com which will be used to organize scientific articles about literature.

              1. 3

                This is pretty neat. Although it may not be the intended use, I would find it useful for looking for finding new fiction authors.

                1. 4

                  That is one of the main use cases of the Literature-Map. You can give it a a try by putting your favorite fiction author into the search and see what comes up.

                  1. 1

                    That’s really awesome, nice work!

                2. 1

                  How are the author names embedded in 2-D space?

                  1. 1

                    How uncanny! I put in the name of an author I was reading, and up came the names of 3 authors who I had just read before, and 2 authors that I was planning on reading next. I guess I’m predictable :-)

                    This is neat, thanks for sharing!

                  1. 1

                    This week at work I’m focusing more on admin tooling and general quality of life improvements. The biggest one that I’m struggling with mentally is that I need to adjust the way that I’m handling events (sports games) that should be de-duplicated based on their time. Right now I’ve got something like this:

                      scope :existing, -> (date, teams, duration=nil) {
                        # If the date we're sent is at midnight (TBA time) then we count any games between
                        # the teams on the same day as existing. Otherwise we only count games that are within
                        # 90 minutes of the specified time OR that are currently TBA games.
                        if duration.nil?
                          _timespan = (date == Time.zone.parse(date.to_s).midnight) ? by_date(date) : within(90.minutes, date)
                        else
                          _timespan = within(duration, date)
                        end
                    
                        if teams.length == 2
                          _timespan.with_teams(teams[0], teams[1])
                            .or(by_tba(date).with_teams(teams[0], teams[1]))
                        else
                          _timespan.by_team(teams[0])
                            .or(by_tba(date).by_team(teams[0]))
                        end
                      }
                    

                    And that works like a charm… except for the fact that some sports handle things differently, so 90.minutes works fine for a soccer game but in football it’d be awesome if that could be 12.hours. I’m not sure how to make the time duration change based on a separate column (sport_id) without passing it directly into the query (which is why there’s a duration parameter built in currently – I’ve been passing a special duration manually when needed). Can’t be that hard to figure out, though.


                    Outside of work, I think my news aggregation and classification app Kudzu is going really well! I’ve got a decent tagging and search going now, but the UI still isn’t exactly wonderful. There’s also the problem of it just not being a very interesting app without topic tags, but right now I’m the only one applying tags… so I should definitely work on an auto-tagging setup at some point soon.

                    1. 2

                      We’ve hit a good stride at work recently, so I’m going to try and keep that up! Outside of work, this week I’m going to really focus on getting my news aggregation site going with better topic tagging functionality and practice the guitar more. I’ve got the intro to Reelin’ in the Years down, so nothing’s stopping me at this point.