• Activity
  • Votes
  • Comments
  • New
  • All activity
  • Showing only topics with the tag "recurring". Back to normal view
    1. This Week's Releases 23/11 - Oneohtrix Point Never, Dipset, Rita Ora

      Releases of the week 17/11/2018 - 23/11/2018 Featured Release Oneohtrix Point Never - Love In The Time Of Lexapro (EP) (Prog Electronic, Ambient) Oneohtrix Point Never has dropped off his new EP,...

      Releases of the week 17/11/2018 - 23/11/2018


      Featured Release

      Oneohtrix Point Never - Love In The Time Of Lexapro (EP) (Prog Electronic, Ambient)

      Oneohtrix Point Never has dropped off his new EP, Love in the Time of Lexapro....
      The new effort follows producer Daniel Lopatin’s impressive 2018 album, Age Of, and The Station EP from July. It contains a pair of new songs and alternate, collaborative versions of two Age Of tracks.
      The two previously unreleased originals are titled, “Thank God I’m a Country Girl” and “Love in the Time of Lexapro”. The latter title track has been an audience favorite on Lopatin’s Age Of tour, but has never been properly recorded and released until now. Also included is a rework of Age Of’s “Last Known Image Of A Song” from veteran Japanese experimental musician and composer Ryuichi Sakamoto (The Revenant), as well as an updated take on Age Of highlight “Babylon” featuring additional contributions from (Sandy) Alex G.”

      Source: Consequence of Sound

      Stream Links

      Other Notable Relases

      Dipset - Diplomatic Ties (Trap, Hip Hop)

      Listen to single

      Rita Ora - Let You Love Me (Pop, Electropop)

      Listen to single

      Boosie Badass - Boosie Blues Cafe (Hip Hop, Blues)

      Listen

      Art Brut - Wham! Bang! Pow! Let’s Rock Out! (Indie, Rock)

      Listen to single

      Feel free to discuss or feature any and all other releases in the comments below

      Discussion Points

      Have you listened to any of these releases yet?
      What are your thoughts?
      What are you looking forward to listen to?
      What have you enjoyed from these artists in the past?

      // All feedback on this format welcome below.

      4 votes
    2. What are you reading these days? #7

      What are you reading currently? Fiction or non-fiction, any genre, any language! Tell us what you're reading, and talk a bit about it. Past weeks: Week #1 · Week #2 · Week #3 · Week #4 · Week #5 ·...

      What are you reading currently? Fiction or non-fiction, any genre, any language! Tell us what you're reading, and talk a bit about it.

      Past weeks: Week #1 · Week #2 · Week #3 · Week #4 · Week #5 · Week #6

      11 votes
    3. What have you been watching/reading this week? (Anime/Manga)

      Feel free to talk about something you saw that was cool, something that was bad, ask for recommendations, or anything else you can think of. If you want to, feel free to find the thing you're...

      Feel free to talk about something you saw that was cool, something that was bad, ask for recommendations, or anything else you can think of.

      If you want to, feel free to find the thing you're talking about and link to its Anilist, MAL, or any other anime/manga database you use!

      7 votes
    4. ~music Listening Club 23 - Dark Side of the Moon

      Welcome to the 23rd week, it had to come eventually...another classic record discussion: The Dark Side of the Moon by Pink Floyd! Posting a little early since I'll be busy celebrating...

      Welcome to the 23rd week, it had to come eventually...another classic record discussion: The Dark Side of the Moon by Pink Floyd! Posting a little early since I'll be busy celebrating Thanksgiving, have a great day everyone.

      The Dark Side of the Moon is the eighth studio album by English rock band Pink Floyd, released on 1 March 1973 by Harvest Records. It built on ideas explored in Pink Floyd's earlier recordings and performances, but without the extended instrumentals that characterised their earlier work. Its themes explore conflict, greed, time, and mental illness, the latter partly inspired by the deteriorating health of founding member Syd Barrett, who left in 1968.

      Developed during live performances, Pink Floyd premiered an early version of The Dark Side of the Moon several months before recording began. New material was recorded in two sessions in 1972 and 1973 at Abbey Road Studios in London. The group used advanced recording techniques at the time, including multitrack recording and tape loops; analogue synthesizers are prominent, and snippets from interviews with Pink Floyd's road crew and others provide philosophical quotations. Engineer Alan Parsons was responsible for many sonic aspects and the recruitment of singer Clare Torry, who appears on one track. The iconic sleeve was designed by Storm Thorgerson; following keyboardist Richard Wright's request for a "simple and bold" design, it depicts a prism spectrum, representing the band's lighting and the record's themes.

      The Dark Side of the Moon produced two singles: "Money" and "Us and Them". The album topped the Billboard chart for a week, and remained on the chart for 741 weeks from 1973 to 1988. Following a change in how Billboard counts sales in 2009, it re-entered the chart and has since appeared for over 900 weeks. With estimated sales of over 45 million, it is Pink Floyd's bestselling album and one of the bestselling worldwide. It has been remastered and rereleased several times, and covered in its entirety by several acts. It is regarded as one of the greatest albums of all time.

      Here's the place to discuss your thoughts on the record, your history with it or the artist, and basically talk about whatever you want to that goes along with The Dark Side of the Moon! Remember that this is intended to be a slow moving thing, feel free to take your time and comment at any point in the week!

      If you'd like to stream or buy the album, it can be found on most platforms here.

      Rather than get an obscure record this week, I'd love to hear from you in responses to this comment!

      9 votes
    5. What have you been listening to this week?

      Filling in again this week at Whom's request. What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something! Feel free to give...

      Filling in again this week at Whom's request.

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something!

      Feel free to give recs or discuss anything about each others' listening habits.

      You can make a chart if you use last.fm:

      http://www.tapmusic.net/lastfm/

      Remember that linking directly to your image will update with your future listening, make sure to reupload to somewhere like imgur if you'd like it to remain what you have at the time of posting.

      12 votes
    6. ~music Listening Club 22 - Survival

      Welcome to week 22! Here we've got this week's user-voted record: Survival by Bob Marley & The Wailers! Taken from @koan's pitch: Does Bob Marley have gold and platinum records? Definitely....

      Welcome to week 22! Here we've got this week's user-voted record: Survival by Bob Marley & The Wailers!

      Taken from @koan's pitch:

      Does Bob Marley have gold and platinum records? Definitely. Survival is not one of them, but in my opinion it is by far his greatest album -- hands down, no competition. Everybody has an opinion about Bob Marley, whether you've actually given him a shot or not. Reggae can be polarizing. Some love it, some think it's corny. But Survival is not corny. It's Marley's greatest roots reggae record.

      While some Bob Marley songs might make you want to relax on a beach and sip cold cocktails, the songs on Survival make you want to get up and do something about shit. When I was absolutely stewing in dissatisfaction with my corporate job, listening to Survival on my commute in the morning inspired me to change my life. Be careful, because listening to it too much might turn you into a revolutionary.

      If you're unfamiliar with reggae in general, or you think it's silly, give this record a chance. It might change your perspective about a very deep and varied genre of music.

      Here's the place to discuss your thoughts on the record, your history with it or the artist, and basically talk about whatever you want to that goes along with Survival. Remember that this is intended to be a slow moving thing, feel free to take your time and comment at any point in the week!

      If you'd like to stream or buy the album, it can be found on most platforms here.

      7 votes
    7. What have you been listening to this week?

      Filling in again this week. What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something! Feel free to give recs or discuss...

      Filling in again this week.

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something!

      Feel free to give recs or discuss anything about each others' listening habits.

      You can make a chart if you use last.fm:

      http://www.tapmusic.net/lastfm/

      Remember that linking directly to your image will update with your future listening, make sure to reupload to somewhere like imgur if you'd like it to remain what you have at the time of posting.

      14 votes
    8. This Week's Releases 16/11 - Anderson .Paak, The Smashing Pumpkins, Imagine Dragons

      Releases of the week 10/11/2018 - 16/11/2018 Featured Release Anderson .Paak - Oxnard (R&B, Hip Hop) Oxnard marks .Paak’s first release on Dre’s Aftermath Entertainment and last of “his beach...

      Releases of the week 10/11/2018 - 16/11/2018


      Featured Release

      Anderson .Paak - Oxnard (R&B, Hip Hop)

      Oxnard marks .Paak’s first release on Dre’s Aftermath Entertainment and last of “his beach series.” “You know, we went to Venice, we went to Malibu,” .Paak noted, “so it’s only right that we take it to the next place, up the coast, up to the next beach.” As hinted previously, Dre was “heavily” involved in the making of the LP, serving as executive producer. “His music was everything to me,” Paak said of his mentor. “It molded me.”
      Another famous name that pops up on Oxnard is Madlib, a veteran rapper and producer who is also known for his collaborations with DOOM, J Dilla, and Freddie Gibbs.
      The new album features “sprawling psychedelic grooves and confident verses,” according to Rolling Stone, and per .Paak, a special ingredient missing from the current musical landscape. “I feel like ambition is missing from today’s music,” he explained. “This is the album I dreamed of making in high school, when I was listening to [Jay-Z]’s The Blueprint, The Game’s The Documentary, and [Kanye West’s] The College Dropout.”

      Source: Consequence of Sound

      Listen

      Notable Relases

      The Smashing Pumpkins - Shiny and Oh So Bright, Vol. 1 / LP: No Past. No Future. No Sun. (Rock, Grunge)

      Imagine Dragons - Origins (Pop Rock)

      Mariah Carey - Caution (R&B, Pop)

      The Black Eyed Peas - Masters of the Sun, Vol. 1 (Hip Hop, Pop Rap)

      Feel free to discuss or feature any and all other releases in the comments below

      Discussion Points

      Have you listened to any of these releases?
      What are your thoughts?
      What are you looking forward to listen to?
      What have you enjoyed from these artists in the past?

      This is a new format I'm trying out to help immerse people into new album discussion. I welcome and look forward to any feedback!

      8 votes
    9. What have you been watching/reading this week? (Anime/Manga)

      Sorry for the late post. Anyway, what have you been watching/reading this week? Feel free to talk about something you saw that was cool, something that was bad, ask for recommendations, or...

      Sorry for the late post.

      Anyway, what have you been watching/reading this week?

      Feel free to talk about something you saw that was cool, something that was bad, ask for recommendations, or anything else you can think of.

      If you want to, feel free to find the thing you're talking about and link to its Anilist, MAL, or any other anime/manga database you use!

      5 votes
    10. Code Quality Tip: Wrapping external libraries.

      Preface Occasionally I feel the need to touch on the subject of code quality, particularly because of the importance of its impact on technical debt, especially as I continue to encounter the...

      Preface

      Occasionally I feel the need to touch on the subject of code quality, particularly because of the importance of its impact on technical debt, especially as I continue to encounter the effects of technical debt in my own work and do my best to manage it. It's a subject that is unfortunately not emphasized nearly enough in academia.


      Background

      As a refresher, technical debt is the long-term cost of the design decisions in your code. These costs can manifest in different ways, such as greater difficulty in understanding what your code is doing or making non-breaking changes to it. More generally, these costs manifest as additional time and resources being spent to make some kind of change.

      Sometimes these costs aren't things you think to consider. One such consideration is how difficult it might be to upgrade a specific technology in your stack. For example, what if you've built a back-end system that integrates with AWS and you suddenly need to upgrade your SDK? In a small project this might be easy, but what if you've built a system that you've been maintaining for years and it relies heavily on AWS integrations? If the method names, namespaces, argument orders, or anything else has changed between versions, then suddenly you'll need to update every single reference to an AWS-related tool in your code to reflect those changes. In larger software projects, this could be a daunting and incredibly expensive task, spanning potentially weeks or even months of work and testing.

      That is, unless you keep those references to a minimum.


      A Toy Example

      This is where "wrapping" your external libraries comes into play. The concept of "wrapping" basically means to create some other function or object that takes care of operating the functions or object methods that you really want to target. One example might look like this:

      <?php
      
      class ImportedClass {
          public function methodThatMightBecomeModified($arg1, $arg2) {
              // Do something.
          }
      }
      
      class ImportedClassWrapper {
          private $class_instance = null;
      
          private function getInstance() {
              if(is_null($this->class_instance)) {
                  $this->class_instance = new ImportedClass();
              }
      
              return $this->class_instance;
          }
      
          public function wrappedMethod($arg1, $arg2) {
              return $this->getInstance()->methodThatMightBecomeModified($arg1, $arg2);
          }
      }
      
      ?>
      

      Updating Tools Doesn't Have to Suck

      Imagine that our ImportedClass has some important new features that we need to make use of that are only available in the most recent version, and we're several versions behind. The problem, of course, is that there were a lot of changes that ended up being made between our current version and the new version. For example, ImportedClass is now called NewImportedClass. On top of that, methodThatMightBecomeModified is now called methodThatWasModified, and the argument order ended up getting switched around!

      Now imagine that we were directly calling new ImportedClass() in many different places in our code, as well as directly invoking methodThatMightBecomeModified:

      <?php
      
      $imported_class_instance = new ImportedClass();
      $imported_class_instance->methodThatMightBeModified($val1, $val2);
      
      ?>
      

      For every single instance in our code, we need to perform a replacement. There is a linear or--in terms of Big-O notation--a complexity of O(n) to make these replacements. If we assume that we only ever used this one method, and we used it 100 times, then there are 100 instances of new ImportClass() to update and another 100 instances of the method invocation, equaling 200 lines of code to change. Furthermore, we need to remember each of the replacements that need to be made and carefully avoid making any errors in the process. This is clearly non-ideal.

      Now imagine that we chose instead to use the wrapper object:

      <?php
      
      $imported_class_wrapper = new ImportedClassWrapper();
      $imported_class_wrapper->wrappedMethod($val1, $val2);
      
      ?>
      

      Our updates are now limited only to the wrapper class:

      <?php
      
      class ImportedClassWrapper {
          private $class_instance = null;
      
          private function getInstance() {
              if(is_null($this->class_instance)) {
                  $this->class_instance = new NewImportedClass();
              }
      
              return $this->class_instance;
          }
      
          public function wrappedMethod($arg1, $arg2) {
              return $this->getInstance()->methodThatWasModified($arg2, $arg1);
          }
      }
      
      ?>
      

      Rather than making changes to 200 lines of code, we've now made changes to only 2. What was once an O(n) complexity change has now turned into an O(1) complexity change to make this upgrade. Not bad for a few extra lines of code!


      A Practical Example

      Toy problems are all well and good, but how does this translate to reality?

      Well, I ran into such a problem myself once. Running MongoDB with PHP requires the use of an external driver, and this driver provides an object representing a MongoDB ObjectId. I needed to perform a migration from one hosting provider over to a new cloud hosting provider, with the application and database services, which were originally hosted on the same physical machine, hosted on separate servers. For security reasons, this required an upgrade to a newer version of MongoDB, which in turn required an upgrade to a newer version of the driver.

      This upgrade resulted in many of the calls to new MongoId() failing, because the old version of the driver would accept empty strings and other invalid ID strings and default to generating a new ObjectId, whereas the new version of the driver treated invalid ID strings as failing errors. And there were many, many cases where invalid strings were being passed into the constructor.

      Even after spending hours replacing the (literally) several dozen instances of the constructor calls, there were still some places in the code where invalid strings managed to get passed in. This made for a very costly upgrade.

      The bugs were easy to fix after the initial replacements, though. After wrapping new MongoId() inside of a wrapper function, a few additional conditional statements inside of the new function resolved the bugs without having to dig around the rest of the code base.


      Final Thoughts

      This is one of those lessons that you don't fully appreciate until you've experienced the technical debt of an unwrapped external library first-hand. Code quality is an active effort, but a worthwhile one. It requires you to be willing to throw away potentially hours or even days of work when you realize that something needs to change, because you're thinking about how to keep yourself from banging your head against a wall later down the line instead of thinking only about how to finish up your current task.

      "Work smarter, not harder" means putting in some hard work upfront to keep your technical debt under control.

      That's all for now, and remember: don't be fools, wrap your external tools.

      23 votes
    11. ~music Listening Club 21 - At Folsom Prison

      21 weeks and yet another classic record discussion: At Folsom Prison by Johnny Cash! At Folsom Prison is a live album and 27th overall album by Johnny Cash, released on Columbia Records in May...

      21 weeks and yet another classic record discussion: At Folsom Prison by Johnny Cash!

      At Folsom Prison is a live album and 27th overall album by Johnny Cash, released on Columbia Records in May 1968. After his 1955 song "Folsom Prison Blues", Cash had been interested in recording a performance at a prison. His idea was put on hold until 1967, when personnel changes at Columbia Records put Bob Johnston in charge of producing Cash's material. Cash had recently controlled his drug abuse problems, and was looking to turn his career around after several years of limited commercial success. Backed with June Carter, Carl Perkins and the Tennessee Three, Cash performed two shows at Folsom State Prison in California on January 13, 1968. The resulting album consisted of fifteen tracks from the first show and two tracks from the second.

      Despite little initial investment by Columbia, the album was a hit in the United States, reaching number one on the country charts and the top 15 of the national album chart. The lead single from the album, a live version of "Folsom Prison Blues", was a top 40 hit, Cash's first since 1964's "Understand Your Man". At Folsom Prison received positive reviews and revitalized Cash's career, becoming the first in a series of live albums recorded at prisons that includes "At San Quentin" (1969), "Pa Osteraker" (1973), and "A Concert Behind Prison Walls" (1976). The album was rereleased with additional tracks in 1999, a three-disc set in 2008, and a five LP box set with bonus rehearsals in 2018 for Record Store Day. It was certified three times Platinum on March 27, 2003 by the Recording Industry Association of America for US sales exceeding three million.

      Here's the place to discuss your thoughts on the record, your history with it or the artist, and basically talk about whatever you want to that goes along with At Folsom Prison! Remember that this is intended to be a slow moving thing, feel free to take your time and comment at any point in the week!

      If you'd like to stream or buy the album, it can be found on most platforms here.

      Don't forget to nominate and vote for next week's obscure record in response to this comment!

      8 votes
    12. What are you reading these days? #6

      What are you reading currently? Fiction or non-fiction, any genre, any language! Tell us what you're reading, and talk a bit about it. Notes: Do any one of you follow any literary magazines? How...

      What are you reading currently? Fiction or non-fiction, any genre, any language! Tell us what you're reading, and talk a bit about it.

      Notes: Do any one of you follow any literary magazines? How do you follow fresh pieces of literature, and grab hold of them "fresh out of the oven"?

      Past weeks: Week #1 · Week #2 · Week #3 · Week #4 · Week #5

      22 votes
    13. What have you been watching/reading this week? (Anime/Manga)

      Making the thread before I fall asleep edition. Anyway, what have you been watching/reading this week? Feel free to talk about something you saw that was cool, something that was bad, ask for...

      Making the thread before I fall asleep edition.

      Anyway, what have you been watching/reading this week?

      Feel free to talk about something you saw that was cool, something that was bad, ask for recommendations, or anything else you can think of.

      If you want to, feel free to find the thing you're talking about and link to its Anilist, MAL, or any other anime/manga database you use!

      9 votes
    14. ~music Listening Club 20 - Washing Machine

      Hey, we made it to week 20! Here we've got this week's user-voted record: Washing Machine by Sonic Youth! Washing Machine is the ninth studio album by the American experimental rock band Sonic...

      Hey, we made it to week 20! Here we've got this week's user-voted record: Washing Machine by Sonic Youth!

      Washing Machine is the ninth studio album by the American experimental rock band Sonic Youth, released on September 26, 1995 by DGC Records. It was recorded at Easley Studios in Memphis, Tennessee and produced by the band and John Siket, who also engineered the band's previous two albums. The album features more open-ended pieces than its predecessors and contains some of the band's longest songs, including the 20-minute ballad "The Diamond Sea", which is the lengthiest track to feature on any of Sonic Youth's studio albums.

      Taken from @Cleb's pitch:

      I listened to this fairly recently and after my previous experience with Sonic Youth (Daydream Nation, Sister), which I thought was mostly just okay, fine, whatever, I did not expect to get as much enjoyment out of this album as I did. Yeah, it's Sonic Youth going even less no-wave inspired than before, but I think they fit far better into that groove of noisy-ish alt rock without the no-wave coming in at times. Maybe I just think the writing is cooler. All I know is it made me finally able to say "I appreciate Sonic Youth."

      Here's the place to discuss your thoughts on the record, your history with it or the artist, and basically talk about whatever you want to that goes along with Washing Machine. Remember that this is intended to be a slow moving thing, feel free to take your time and comment at any point in the week!

      If you'd like to stream or buy the album, it can be found on most platforms here.

      7 votes
    15. What have you been watching/reading this week? (Anime/Manga)

      Last week I didn't realize I hadn't made the weekly post until it was a couple days too late, so I decided to just rollover to this week. Sorry, folks. Might have to get someone else to post...

      Last week I didn't realize I hadn't made the weekly post until it was a couple days too late, so I decided to just rollover to this week. Sorry, folks. Might have to get someone else to post sometimes.

      Anyway, what have you been watching/reading this week?

      Feel free to talk about something you saw that was cool, something that was bad, ask for recommendations, or anything else you can think of.

      If you want to, feel free to find the thing you're talking about and link to its Anilist, MAL, or any other anime/manga database you use!

      9 votes
    16. what creative projects are you working on?

      feels like we should probably have one of these in here since it doesn't appear we've had one of these as a community in ~creative in awhile--if ever. i've spent the better portion of my day today...

      feels like we should probably have one of these in here since it doesn't appear we've had one of these as a community in ~creative in awhile--if ever.

      i've spent the better portion of my day today working on a census form for the kryfona kingdom, which is one of the many countries in my fairly large worldbuilding effort. the first page actually came out really well, i think, so that was time well spent. i've considered making a post about some of its more intricate detail since i think some people on here might enjoy that, but for now i've opted to just make this general thread since i dunno how well it'd go as a discussion topic. maybe if y'all think it's worthy of one? idk.

      anyways, what creative things have you been working on recently?

      15 votes
    17. What have you been listening to this week?

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something! Feel free to give recs or discuss anything about each others'...

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something!

      Feel free to give recs or discuss anything about each others' listening habits.

      You can make a chart if you use last.fm:

      http://www.tapmusic.net/lastfm/

      Remember that linking directly to your image will update with your future listening, make sure to reupload to somewhere like imgur if you'd like it to remain what you have at the time of posting.

      14 votes
    18. What are you reading these days? #5 (Was: What are you reading this week?)

      What are you reading currently? Fiction or non-fiction, any genre, any language! Tell us what you're reading, and talk a bit about it. Notes: I've modified the title a bit, having it say "this...

      What are you reading currently? Fiction or non-fiction, any genre, any language! Tell us what you're reading, and talk a bit about it.

      Notes: I've modified the title a bit, having it say "this week" when it was never weekly (it's bi-weekly) was a bit weird.

      Past weeks: Week #1 · Week #2 · Week #3 · Week #4

      18 votes
    19. ~music Listening Club 19 - The Beatles (The White Album)

      19 weeks and there's another classic record discussion to be had: The Beatles by The Beatles! The Beatles, also known as "The White Album", is the ninth studio album by the English rock band the...

      19 weeks and there's another classic record discussion to be had: The Beatles by The Beatles!

      The Beatles, also known as "The White Album", is the ninth studio album by the English rock band the Beatles, released on 22 November 1968. A double album, its plain white sleeve has no graphics or text other than the band's name embossed, which was intended as a direct contrast to the vivid cover artwork of the band's previous LP Sgt. Pepper's Lonely Hearts Club Band. Although no singles were issued from The Beatles in Britain and the United States, the songs "Hey Jude" and "Revolution" originated from the same recording sessions and were issued on a single in August 1968. The album's songs range in style from British blues and ska to tracks influenced by Chuck Berry and by Karlheinz Stockhausen.

      Here's the place to discuss your thoughts on the record, your history with it or the artist, and basically talk about whatever you want to that goes along with the white album! Remember that this is intended to be a slow moving thing, feel free to take your time and comment at any point in the week!

      If you'd like to stream or buy the album, it can be found on most platforms here.

      Don't forget to nominate and vote for next week's obscure record in response to this comment!

      11 votes
    20. [Weekly] What'd You Munch This Week?

      hey all! i see these kinds of posts in ~music where people talk all about what they're listening to that week, what they checked out for the first time, what they really enjoyed or hated. i...

      hey all!

      i see these kinds of posts in ~music where people talk all about what they're listening to that week, what they checked out for the first time, what they really enjoyed or hated. i thought it'd be cool to do a food version!

      did you try a new recipe this week? how was it?

      eat at a cool new restaurant?

      try a new dish that you absolutely loved / hated?

      grab a plate and dive on in!

      7 votes
    21. Light Analysis of a Recent Code Refactor

      Preface In a previous topic, I'd covered the subject of a few small lessons regarding code quality. Especially important was the impact on technical debt, which can bog down developer...

      Preface

      In a previous topic, I'd covered the subject of a few small lessons regarding code quality. Especially important was the impact on technical debt, which can bog down developer productivity, and the need to pay down on that debt. Today I would like to touch on a practical example that I'd encountered in a production environment.


      Background

      Before we can discuss the refactor itself, it's important to be on the same page regarding the technologies being used. In my case, I work with PHP utilizing a proprietary back-end framework and MongoDB as our database.

      PHP is a server-side scripting language. Like many scripting languages, it's loosely typed. This has some benefits and drawbacks.

      MongoDB is a document-oriented database. By default it's schema-less, allowing you to make any changes at will without an update to schema. This can blend pretty well with the loose typing of PHP. Each document is represented using a JSON-like structure and is stored in something called a "collection". For those of you accustomed to using relational database, a "collection" is analogous to a table, each document is a row, and each field in the document is a column. A typical query in the MongoDB shell would look something like this:

      db.users.findOne({
          username: "Emerald_Knight"
      });
      

      The framework itself has some framework-specific objects that are held in global references. This makes them easily accessible, but naturally littering your code with a bunch of globals is both error-prone and an eyesore.


      Unexpected Spaghetti

      In my code base are a number of different objects that are designed to handle basic CRUD-like operations on their associated database entries. Some of these objects hold references to other objects, so naturally there is some data validation that occurs to ensure that the references are both valid and authorized. Pretty typical stuff.

      What I noticed, however, is that the collection names for these database entries were littered throughout my code. This isn't necessarily a bad thing, except there were some use cases that came to mind: what if it turned out that my naming for one or more of these collections wasn't ideal? What if I wanted to change a collection name for the sake of easier management on the database end? What if I have a tendency to forget the name of a database collection and constantly have to look it up? What if I make a typo of all things? On top of that, the framework's database object was stored in a global variable.

      These seemingly minor sources of technical debt end up adding up over time and could cause some serious problems in the worst case. I've had breaking bugs make their way passed QA in the past, after all.


      Exchanging Spaghetti for Some Light Lasagna

      The problem could be characterized simply: there were scoping problems and too many references to what were essentially magic strings. The solution, then, was to move the database object reference from global to local scope within the application code and to eliminate the problem of magic strings. Additionally, it's a good idea to avoid polluting the namespace with an over-reliance on constants, and using those constants for database calls can also become unsightly and difficult to follow as those constants could end up being generally disconnected from the objects they're associated with.

      There turned out to be a nice, object-oriented, very PHP-like solution to this problem: a so-called "magic method" named "__call". This method is invoked whenever an "inaccessible" method is called on the object. Using this method, a database command executed on a non-database object could pass the command to the database object itself. If this logic were placed within an abstract class, the collection could then be specified simply as a configuration option in the inheriting class.

      This is what such a solution could look like:

      <?php
      
      abstract class MyBaseObject {
      
          protected $db = null;
          protected $collection_name = null;
      
          public function __construct() {
              global $db;
              
              $this->db = $db;
          }
      
          public function __call($method_name, $args) {
              if(method_exists($this->db, $method_name)) {
                  return $this->executeDatabaseCommand($method_name, $args);
              }
      
              throw new Exception(__CLASS__ . ': Method "' . $method_name . '" does not exist.');
          }
      
          public function executeDatabaseCommand($command, $args) {
              $collection = $this->collection_name;
              $db_collection = $this->db->$collection;
      
              return call_user_func_array(array($db_collection, $command), $args);
          }
      }
      
      class UserManager extends MyBaseObject {
          protected $collection_name = 'users';
      
          public function __construct() {
              parent::__construct();
          }
      }
      
      $user_manager = new UserManager();
      $my_user = $user_manager->findOne(array('username'=>'Emerald_Knight'));
      
      ?>
      

      This solution utilizes a single parent object which transforms a global database object reference into a local one, eliminating the scope issue. The collection name is specified as a class property of the inheriting object and only used in a single place in the parent object, eliminating the magic string and namespace polluting issues. Any time you perform queries on users, you do so by using the UserManager class, which guarantees that you will always know that your queries are being performed on the objects that you intend. And finally, if the collection name for an object class ever needs to be updated, it's a simple matter of modifying the single instance of the class property $collection_name, rather than tracking down some disconnected constant.


      Limitations

      This, of course, doesn't solve all of the existing problems. After all, executing the database queries for one object directly from another is still pretty bad practice, violating the principle of separation of concerns. Instead, those queries should generally be encapsulated within object methods and the objects themselves given primary responsibility in handling associated data. It's also incredibly easy to inadvertently override a database method, e.g. defining a findOne() method on UserManager, so there's still some mindfulness required on the part of the programmer.

      Still, given the previous alternative, this is a pretty major improvement, especially for an initial refactor.


      Final Thoughts

      As always, technical debt is both necessary and inevitable. After all, in exchange for not taking the excess time and considering structuring my code this way in the beginning, I had greater initial velocity to get the project off of the ground. What's important is continually reviewing your code as you're building on top of it so that you can identify bottlenecks as they begin to strain your efficiency, and getting those bottlenecks out of the way.

      In other words, even though technical debt is often necessary and is certainly inevitable, it's important to pay down on some of that debt once it starts getting expensive!

      7 votes
    22. What have you been listening to this week?

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something! Feel free to give recs or discuss anything about each others'...

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something!

      Feel free to give recs or discuss anything about each others' listening habits.

      You can make a chart if you use last.fm:

      http://www.tapmusic.net/lastfm/

      Remember that linking directly to your image will update with your future listening, make sure to reupload to somewhere like imgur if you'd like it to remain what you have at the time of posting.

      14 votes
    23. ~music Listening Club 18 - Venture EP

      Hi, I'm filling in again! Welcome to week 18! Here we've got this week's user-voted record: Venture EP by Televisor! Taken from @Bauke's pitch: Televisor's Venture EP is a high-energy 4 track...

      Hi, I'm filling in again!

      Welcome to week 18! Here we've got this week's user-voted record: Venture EP by Televisor!

      Taken from @Bauke's pitch:

      Televisor's Venture EP is a high-energy 4 track nu-disco EP filled with synthesizers, heavy hitting basslines, and guitar licks all to make your head bounce. Together with some retro influences to make one hell of a funky beat in every track!

      Here's the place to discuss your thoughts on the record, your history with it or the artist, and basically talk about whatever you want to that goes along with Venture EP. Remember that this is intended to be a slow moving thing, feel free to take your time and comment at any point in the week!

      If you'd like to stream or buy the album, it can be found on most platforms here.

      8 votes
    24. What have you been watching/reading this week? (Anime/Manga)

      Guess this is the proper way to do the post without getting lost posters then. Anyway, what have you been watching/reading this week? Feel free to talk about something you saw that was cool,...

      Guess this is the proper way to do the post without getting lost posters then.

      Anyway, what have you been watching/reading this week?

      Feel free to talk about something you saw that was cool, something that was bad, ask for recommendations, or anything else you can think of.

      If you want to, feel free to find the thing you're talking about and link to its Anilist, MAL, or any other anime/manga database you use!

      16 votes
    25. What have you been listening to this week?

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something! Feel free to give recs or discuss anything about each others'...

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something!

      Feel free to give recs or discuss anything about each others' listening habits.

      You can make a chart if you use last.fm:

      http://www.tapmusic.net/lastfm/

      Remember that linking directly to your image will update with your future listening, make sure to reupload to somewhere like imgur if you'd like it to remain what you have at the time of posting.

      16 votes
    26. Weekly game discussion 1: Call of Duty: Black Ops 4

      Description: Call of Duty: Black Ops 4 features thrilling grounded multiplayer combat, three full zombies adventures at launch, and a massive battle royale experience. Note: I couldn't find a...

      Description:

      Call of Duty: Black Ops 4 features thrilling grounded multiplayer combat, three full zombies adventures at launch, and a massive battle royale experience.

      Note: I couldn't find a proper description anywhere so I just grabbed the text from battle.net


      Links:

      Battle.net Xbox PlayStation Amazon

      11 votes
    27. What are you reading this week? #4

      What are you reading currently? Fiction or non-fiction, any genre, any language! Tell us what you're reading, and talk a bit about it. Please also tell me if you think this is too frequent, in...

      What are you reading currently? Fiction or non-fiction, any genre, any language! Tell us what you're reading, and talk a bit about it.

      Please also tell me if you think this is too frequent, in which case I can switch to doing this once a month instead of every other week. I'll edit the post text to append the decision. Have a nice weekend!

      Past weeks: Week #1 · Week #2 · Week #3

      15 votes
    28. What have you been watching/reading this week? (Anime/Manga)

      New title to hopefully avoid people getting lost and posting the wrong media here, if you have a suggestion to make it less ugly then please say something. Anyway, what have you been...

      New title to hopefully avoid people getting lost and posting the wrong media here, if you have a suggestion to make it less ugly then please say something.

      Anyway, what have you been watching/reading this week?

      Feel free to talk about something you saw that was cool, something that was bad, ask for recommendations, or anything else you can think of.

      If you want to, feel free to find the thing you're talking about and link to its Anilist, MAL, or any other anime/manga database you use!

      12 votes
    29. What have you been listening to this week?

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something! Feel free to give recs or discuss anything about each others'...

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something!

      Feel free to give recs or discuss anything about each others' listening habits.

      You can make a chart if you use last.fm:

      http://www.tapmusic.net/lastfm/

      Remember that linking directly to your image will update with your future listening, make sure to reupload to somewhere like imgur if you'd like it to remain what you have at the time of posting.

      18 votes
    30. ~music Listening Club 17 - Unknown Pleasures

      17 weeks in and we have another classic record discussion: Unknown Pleasures by Joy Division! Unknown Pleasures is the debut studio album by English rock band Joy Division, released on 15 June...

      17 weeks in and we have another classic record discussion: Unknown Pleasures by Joy Division!

      Unknown Pleasures is the debut studio album by English rock band Joy Division, released on 15 June 1979 by Factory Records. The album was recorded and mixed over three successive weekends at Stockport's Strawberry Studios in April 1979, and was produced by Martin Hannett, who incorporated a number of unconventional production techniques into the group's sound. The cover artwork was designed by artist Peter Saville. It is the only Joy Division album released during lead singer Ian Curtis's lifetime.

      Factory Records did not release any singles from Unknown Pleasures, and the album did not chart despite the relative success of the group's non-album debut single "Transmission". It has since received sustained critical acclaim as an influential post-punk album, and has been named as one of the best albums of all time by publications such as NME, AllMusic, Select, and Spin.

      Here's the place to discuss your thoughts on the record, your history with it or the artist, and basically talk about whatever you want to that goes along with Unknown Pleasures! Remember that this is intended to be a slow moving thing, feel free to take your time and comment at any point in the week!

      If you'd like to stream or buy the album, it can be found on most platforms here.

      Don't forget to nominate and vote for next week's obscure record in response to this comment!

      12 votes
    31. ~music Listening Club 16 - Body, Mind & Spirit

      Hi, I'm filling in again at the request of @Whom! Welcome to week 16! Here we've got this week's user-voted record: *Body, Mind & Spirit * by Black Renaissance! Taken from @arghdos' pitch: What we...

      Hi, I'm filling in again at the request of @Whom!

      Welcome to week 16! Here we've got this week's user-voted record: *Body, Mind & Spirit * by Black Renaissance!

      Taken from @arghdos' pitch:

      What we have here is a masterpiece of a spiritual jazz album from Henry Whittaker (who is most-well known for his work with Roy Ayer's Ubiquity). Combining call and response styles of Sun Ra (or RRK), modal jazz of Coltrane, and some Herbie space jams into a funky, sinuous groove.

      Here's the place to discuss your thoughts on the record, your history with it or the artist, and basically talk about whatever you want to that goes along with Body, Mind & Spirit. Remember that this is intended to be a slow moving thing, feel free to take your time and comment at any point in the week!

      If you'd like to stream or buy the album, it can be found on most platforms here.

      7 votes
    32. What have you been listening to this week?

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something! Feel free to give recs or discuss anything about each others'...

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something!

      Feel free to give recs or discuss anything about each others' listening habits.

      You can make a chart if you use last.fm:

      http://www.tapmusic.net/lastfm/

      Remember that linking directly to your image will update with your future listening, make sure to reupload to somewhere like imgur if you'd like it to remain what you have at the time of posting.

      15 votes
    33. ~music Listening Club 15 - Songs in the Key of Life

      It's week 15, and time for another classic record discussion: Songs in the Key of Life by Stevie Wonder! Songs in the Key of Life is the eighteenth album by American recording artist Stevie...

      It's week 15, and time for another classic record discussion: Songs in the Key of Life by Stevie Wonder!

      Songs in the Key of Life is the eighteenth album by American recording artist Stevie Wonder, released on September 28, 1976, by Motown Records, through its division Tamla Records. It was the culmination of his "classic period" albums. The album was recorded primarily at Crystal Sound studio in Hollywood, with some sessions recorded at the Record Plant in Hollywood, the Record Plant in Sausalito, and The Hit Factory in New York City. Final mixing was performed at Crystal Sound.

      An ambitious double LP with a four-song bonus EP, Songs in the Key of Life became the best-selling and most critically acclaimed album of Wonder's career. In 2003, it was ranked number 57 on Rolling Stone magazine's list of the 500 greatest albums of all time. In 2005, it was inducted into the National Recording Registry by the Library of Congress, which deemed it "culturally, historically, or aesthetically significant."

      Here's the place to discuss your thoughts on the record, your history with it or the artist, and basically talk about whatever you want to that goes along with Songs in the Key of Life! Remember that this is intended to be a slow moving thing, feel free to take your time and comment at any point in the week!

      If you'd like to stream or buy the album, it can be found on most platforms here.

      Don't forget to nominate and vote for next week's obscure record in response to this comment!

      15 votes
    34. What are you reading this week? #3

      What are you reading currently? Fiction or non-fiction, any genre, any language! Tell us what you're reading, and talk a bit about it. Past weeks: Week #1 · Week #2

      18 votes
    35. An informal look at the concept of reduction (alternatively: problem-solving for beginners).

      Preface One of the most common questions I see from prospective programmers and computer scientists is "where should I start?". My answer to that is a pretty consistent one: learn how to solve...

      Preface

      One of the most common questions I see from prospective programmers and computer scientists is "where should I start?". My answer to that is a pretty consistent one: learn how to solve problems effectively. But that's vague and not really all that helpful, so I figured that I should actually tackle this in a little more depth by touching on something more specific.

      Specifically, I want to touch on the subject of how to think about complex problems.


      The Rationale Behind Learning

      Before we can better understand how to effectively solve problems, it's important to consider how it is that we learn. With any subject, the standard approach is to begin with the bare basics. For programming, that's writing a Hello, World! program in the new language you're working with. For foreign languages, you learn basic common words and sentence structure. For math, you learn your basic arithmetic operations like addition and multiplication.

      From there, we add on more additional complexity and string together everything we've learned. For a foreign language, this looks like learning about new words, stringing them together in your own sentences, then learning about verb tenses and throwing them into the mix as well. With math, you take your normal number crunching and suddenly throw the concept of order of operations into the mix, then variables and how to solve for them.

      As a general rule, we first get comfortable with solving a simple problem and gradually build up toward solving increasingly more difficult ones.


      The Missing Piece

      Odds are that we've all sat in a math class at one point, and when the teacher asked a student how to solve a problem, they received an immediate "I don't know". You may or may not have been that kid yourself. I have no intention of shaming the kids who struggled (or those who still struggle) with math. Rather, I want to point to what I believe is the fundamental cause of that mental barrier that has frustrated students for generations.

      Learning is not simply a matter of adding more complexity to problems. A key part of learning, and one that I don't recall ever having emphasized during my grade school studies, is your ability to break problems down into the steps that you know how to complete and combine the different, simpler skills you've already learned to arrive at a solution. Instead, you were expected to solve many of those complex problems and learn through practice, or through pure rote memorization.

      What determined whether or not you could solve those problems was then a question of whether or not you could intuit or memorize how to solve those specific problems, and brand new problems that still made use of the same skill sets but had completely different forms would throw a wrench in that. Those who could solve any of those problems--those who, I would argue, were often mistakenly referred to as "geniuses" or "talented"--were really just those who knew how to break a problem down into simpler pieces.

      This isn't a failing on the students, but on the way they've been taught to think about problems.


      Reducing Problems

      What does it mean to "break down" a problem, though? The few times I recall a teacher ever touching on the subject, "break down the problem" and "use the skills you've already learned" were the kinds of pieces of advice passed around, completely vague and devoid of meaning for anyone who didn't already understand. How can we better grasp this important step?

      There's a term in complexity theory known as "reduction". The general idea is that if you have problems A and B, where you already know how to solve B, then if you can transform problem A so that it looks like problem B, then you can use your solution for B to solve at least part of A.

      In other words, finding the solution to a more complex problem is just a matter of finding a way to make it look like a problem you already know how to solve.

      The advice to "break down" a problem really means to perform this process of "reduction", of transforming your more complicated problem A into your simpler, known problem B.


      In Practice

      We're still discussing a vague concept, but now that we have more specific language to work with, we can more easily see how it works in practice (a reduction of its own!).

      Let's consider a conceptually simple problem: grabbing the kth largest (or smallest) item from a list. How do we solve this problem? Probably the most obvious and straightforward answer is to sort the list then grab the kth item, right?

      Notice that we gave two high-level descriptions of the steps we need to solve this problem: sorting, then grabbing the appropriate item. We can therefore then state that the problem of "grab the kth largest/smallest item from a list" can be reduced to the two problems "sort a list" and "grab the kth item from a list".

      Now, let's say we're given the problem "take this list of competitor times from the race and tell me what the top 10 race times were". What do we know about this problem? We know that we're being given a list, and we know that we need the 10 smallest items from that list. We also know that "10 smallest items" is just shorthand for "the 1st smallest item, the 2nd smallest item, ..., and the 10th smallest item". We can therefore reduce this problem to the previous one we solved by transforming it into "grab the kth smallest item from a list" and "repeat for values 1-10 for k".


      Practical Advice

      In the end, my explanation may not have helped much at all in actually grasping the concept of reduction. My intent isn't necessarily to help you understand it immediately, but to provide you a framework for a way of thinking. Even if you do grasp the general concept, you may even wonder how you're supposed to recognize these kinds of reductions out in the wild in non-academic environments. The answer, perhaps annoying, is practice. Much like an appraiser can only become good at discerning details through experience, a programmer or computer scientist can only recognize these patterns through repeated exposure.

      In general, if I had to narrow it down to a small list of tips for improving your problem solving skills, this would be it:

      • Work on grasping the concept of reduction itself.
      • Expose yourself to lots of new problems.
      • Don't shy away from difficult problems. Reduce them as much as you can and solve the pieces you're able to. Try to research the pieces you're struggling with. Return to the problem later when you have more experience if you have to, but take a crack at it first.
      • Don't accept "I don't know" as an answer in itself. Ask yourself why you don't how to solve a problem. Narrow down which pieces you're able to solve and which pieces you're not.
      • Just solve problems. Any problems. Easy ones, hard ones, and anything in between. Solving problems is a skill, and practicing it will make you better at solving problems in general, and better at recognizing the simpler problems inside of more complicated ones.
      • Don't just come up with a solution to a problem. Ensure that you understand how each piece of it works and why it works. Copy-pasting from StackOverflow can be a valid tool at your disposal, but doing so mindlessly isn't nearly as valuable as reviewing the solution, being able to determine whether or not it works before ever executing the code, and being able to discard anything unnecessary from it.

      Final Thoughts

      I'm not an authoritative voice on this subject. I'm not an educator. More than anything, I'm a life-long student and an enthusiast. There's seldom a day when I don't have to research something new in order to solve a problem I'm not familiar with, or remind myself the syntax for a function I've used several times in the past. I don't know anything about teaching others, but I do know plenty about learning, and if there's anything that has stood out to me over the years, it's the fact that I find it easier to learn about something or to solve a problem if I can transform the concept into something that's easier for me to grasp.

      Moreover, I'm human and thus prone to mistakes. Call me out on them if you notice them. I'll take any of my mistakes as learning opportunities :)

      11 votes
    36. ~music Listening Club 14 - Public Strain

      We're at week 14, friends. Here we've got this week's user-voted record: Public Strain by Women! Taken from @Cleb's pitch: Noisy post-punk that sounds exactly like the image the cover depicts:...

      We're at week 14, friends. Here we've got this week's user-voted record: Public Strain by Women!

      Taken from @Cleb's pitch:

      Noisy post-punk that sounds exactly like the image the cover depicts: Marching your way through a cold wasteland in the middle of a blizzard. It builds a wonderfully hopeless atmosphere and comes together so well.

      Here's the place to discuss your thoughts on the record, your history with it or the artist, and basically talk about whatever you want to that goes along with Public Strain. Remember that this is intended to be a slow moving thing, feel free to take your time and comment at any point in the week!

      If you'd like to stream or buy the album, it can be found on most platforms here.

      5 votes
    37. What have you been listening to this week?

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something! Feel free to give recs or discuss anything about each others'...

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something!

      Feel free to give recs or discuss anything about each others' listening habits.

      You can make a chart if you use last.fm:

      http://www.tapmusic.net/lastfm/

      Remember that linking directly to your image will update with your future listening, make sure to reupload to somewhere like imgur if you'd like it to remain what you have at the time of posting.

      14 votes
    38. What have you been watching/reading this week?

      My reminder didn't go off and I didn't realize until today, berate me for being late. Anyway, what have you been watching/reading this week? Feel free to talk about something you saw that was...

      My reminder didn't go off and I didn't realize until today, berate me for being late.

      Anyway, what have you been watching/reading this week?

      Feel free to talk about something you saw that was cool, something that was bad, ask for recommendations, or anything else you can think of.

      If you want to, feel free to find the thing you're talking about and link to its Anilist, MAL, or any other anime/manga database you use!

      6 votes
    39. What have you been listening to this week?

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something! Feel free to give recs or discuss anything about each others'...

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something!

      Feel free to give recs or discuss anything about each others' listening habits.

      You can make a chart if you use last.fm:

      http://www.tapmusic.net/lastfm/

      Remember that linking directly to your image will update with your future listening, make sure to reupload to somewhere like imgur if you'd like it to remain what you have at the time of posting.

      14 votes
    40. ~music Listening Club 13 - Paranoid

      Hey there! We just hit week 13, and it's time for another classic record discussion: Black Sabbath's Paranoid! Paranoid is the second studio album by the English rock band Black Sabbath. Released...

      Hey there! We just hit week 13, and it's time for another classic record discussion: Black Sabbath's Paranoid!

      Paranoid is the second studio album by the English rock band Black Sabbath. Released in September 1970, it was the band's only LP to top the UK Albums Chart until the release of 13 in 2013. Paranoid contains several of the band's signature songs, including "Iron Man", "War Pigs" and the title track, which was the band's only Top 20 hit, reaching number 4 in the UK charts. It is often cited as an influential album in the development of heavy metal music.

      Here's the place to discuss your thoughts on the record, your history with it or the artist, and basically talk about whatever you want to that goes along with Paranoid. Remember that this is intended to be a slow moving thing, feel free to take your time and comment at any point in the week!

      If you'd like to stream or buy the album, it can be found on most platforms here.

      Don't forget to nominate and vote for next week's obscure record in response to this comment!

      10 votes
    41. What have you been watching/reading this week?

      Remembering to post this on time edition. Anyway, what have you been watching/reading this week? Feel free to talk about something you saw that was cool, something that was bad, ask for...

      Remembering to post this on time edition.

      Anyway, what have you been watching/reading this week?

      Feel free to talk about something you saw that was cool, something that was bad, ask for recommendations, or anything else you can think of.

      If you want to, feel free to find the thing you're talking about and link to its Anilist, MAL, or any other anime/manga database you use!

      7 votes
    42. What have you been listening to this week?

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something! Feel free to give recs or discuss anything about each others'...

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something!

      Feel free to give recs or discuss anything about each others' listening habits.

      You can make a chart if you use last.fm:

      http://www.tapmusic.net/lastfm/

      Remember that linking directly to your image will update with your future listening, make sure to reupload to somewhere like imgur if you'd like it to remain what you have at the time of posting.

      15 votes
    43. What have you been watching/reading this week?

      Day and a half late edition. Anyway, what have you been watching/reading this week? Feel free to talk about something you saw that was cool, something that was bad, ask for recommendations, or...

      Day and a half late edition.

      Anyway, what have you been watching/reading this week?

      Feel free to talk about something you saw that was cool, something that was bad, ask for recommendations, or anything else you can think of.

      If you want to, feel free to find the thing you're talking about and link to its Anilist, MAL, or any other anime/manga database you use!

      16 votes
    44. ~music Listening Club 12 - Heart of My Own

      Week 12! Here we've got this week's user-voted record: Heart of My Own by Basia Bulat! Taken from @cfabbro's pitch: I would like to nominate Heart Of My Own by Basia Bulat, a Polish-Canadian folk...

      Week 12! Here we've got this week's user-voted record: Heart of My Own by Basia Bulat!

      Taken from @cfabbro's pitch:

      I would like to nominate Heart Of My Own by Basia Bulat, a Polish-Canadian folk singer-songwriter. I absolutely adore her and think she is criminally underrated even here in Canada. Oddly enough, she did get a chance to do an NPR Tiny Desk Concert a number of years ago though, which was amazing.

      The Youtube playlist for the album is a bit broken but both Spotify and Soundcloud have the whole thing:
      https://open.spotify.com/album/6KCtZck76UV1ym4mthQOWH
      https://soundcloud.com/basia_bulat/sets/heart-of-my-own

      Here's the place to discuss your thoughts on the record, your history with it or the artist, and basically talk about whatever you want to that goes along with Heart of My Own. Remember that this is intended to be a slow moving thing, feel free to take your time and comment at any point in the week!

      If you'd like to stream or buy the album, it can be found on most platforms here.

      10 votes
    45. Reflections on past lessons regarding code quality.

      Preface Over the last couple of years, I've had the opportunity to learn from the mistakes of my predecessors and put those lessons into practice. Among those lessons, three have stood out to me...

      Preface

      Over the last couple of years, I've had the opportunity to learn from the mistakes of my predecessors and put those lessons into practice. Among those lessons, three have stood out to me in particular:

      1. Consistency is king.
      2. Try not to be too clever for your own good.
      3. Good code takes time.

      I know that there are a lot of new and aspiring programmers here (and I'm admittedly far from being a guru myself), so I thought it would be good to touch on these three lessons, what they mean, and why they're so important.


      Consistency is King

      This is something that I had drilled into my head over nearly two years working on the code base at my previous job. Not by my fellow programmers (who did not exist), nor by my boss, but by the code itself.

      Consistency can mean a number of things, but there are two primary points that matter:

      1. Syntactic consistency.
      2. Architectural consistency.

      Syntactic consistency concerns standards in what your code looks like. For example, the choice between snake_case or camelCase or PascalCase for naming; function parameter order; or even something as benign as what kind of indentation and how much of it you use.

      Architectural consistency concerns standards in how you structure your code. Making sure that you either use public class properties or getter and setter methods; using multiple booleans or using bitmasks; using or not using objects for encapsulating data to be passed around; validating data within the primary object or relegating that responsibility to a validator class; and other seemingly minor decisions about how you handle certain behavior make a big difference.

      The code base I maintained had no such consistency. You could never remember whether the method you needed to call was named using snake_case or camelCase and had to perform several searches just to find it. Worse still, some methods defined to handle Ajax calls were prefixed with ajax while many weren't. Argument ordering seemed to be determined by a coin flip, and indentation seemed to vary between 2-space, 3-space, 4-space, and even 5-space indentation depending on what mood my predecessor was in at the time. You often could not tell where a function's body began and where it ended. Writing code was an exercise both in problem solving and in deciphering ancient religious texts.

      Architecturally it was no better. There was no standardization in how data was validated or sanitized, how class members were accessed or modified, how functionality was inherited, whether the functionality was encapsulated in an object method or in a function, or which objects were responsible for which behavior.

      That lack of consistency makes introducing or modifying a small feature, a task which should ordinarily be a breeze, an engineering feat of its own. Often you end up implementing that feature, after dancing around the tangled mess of spaghetti, only to find that the functionality that you implemented already existed somewhere else in the code base but was hiding out in a deep, dark corner that you never even knew was there until you had to fix some other broken feature months later and happened to stumble across it.

      Consistency means predictability, and predictability means discoverability and, more importantly, easier changes and higher confidence in those changes.


      Cleverness is a Fallacy

      In any given project, it can be tempting to do something that saves you extra lines of code, or saves on CPU cycles, or just looks awesome and does something nobody would have thought of before. As human beings and especially as craftsmen, we like to leave our mark and take pride in breaking the status quo by taking a novel and interesting approach to a problem. It can make us feel fulfilled in our work, that we've done something unique, a trademark of sorts.

      The problem with that is that it directly conflicts with the aforementioned consistency and predictability. What ends up being an engineering wonder to you ends up being an engineering nightmare to someone else. While you're enjoying the houses you build with wall studs arranged in the shape of a spider's web, the home remodelers who come along later aren't even sure if they can change part of the structure without causing the entire wall to collapse, and they're not even sure which walls are load-bearing and which aren't, so they're basically playing Jenga while blindfolded.

      The code base I maintained had a few such gems, with what looked like load-bearing walls but were actually made of papier-mâché and were only decorative in nature, and the occasional spider's web wall studs. One spider's web comes to mind in particular. It's been a while since I've worked on that piece of code, so I can't recall what exactly it did, but two query-constructing pieces of logic had overlapping query structure with the difference being the operators and data. Rather than being smart and allowing those two constructs to be different, however, my predecessor decided to be clever and the query construction was abstracted into a separate method so that the same general query structure could be used in other places (note: it never was, and was only ever used in those two instances). It was abstracted so that all original context was lost and no comments existed to explain any of it. On top of that, the method was being called from the most critical piece of the system which, unfortunately, was already a convoluted mess and desperately required a rewrite and thus required me to understand what the hell that method was even doing (incidentally, I fell in love with whiteboards as a result).

      When you feel like you're being clever, you should always stop what you're doing and make sure that what you're doing isn't actually a really terrible idea. Cleverness doesn't exist. Knowledge and intelligence do. Write intelligent code, not clever code.


      Good Code Takes Time

      Bad code more often than not is the result of impatience. We don't like to plan out the solution before we get to writing code. We like to use variables like x and temp in order to quickly achieve functional correctness of our code because stopping to think about how to name them is just additional overhead getting in the way. We don't like to scrap our bad work if we can salvage it in some way instead, because then we have to start from scratch and that's daunting. We continually work against ourselves and gradually increase our mental overhead because we try to decrease our mental overhead. As a result we find ourselves too exhausted by the end of our initial implementations to concern ourselves with fixing obvious problems. Obviously bad but functional code is preferable because we just want the task to be done and over with.

      The more you get exposed to bad code and the more you try to avoid pushing that hell onto yourself and your successors, the more you realize that you need to spend less time coding and more time researching and planning. Whereas you may have been spending upwards of 50% of your time coding previously, suddenly you find yourself spending as little as 10% of your time writing any code at all.

      Professionals from just about any field can tell you that you can either do something right or you can do it twice. You might recognize this most easily in the age-old piece of woodworking wisdom, "measure twice, cut once". The same is true of code, and doing something right means planning how to do it right in the first place before you've even started on the job.


      Putting into Practice

      I've been fortunate over the last couple of months to be able to start on a brand new project and architect it in a way that I see fit. Changes which would ordinarily take days or weeks in the old code base now take me half a day at most, and a matter of minutes at best. I remember where to find a piece of code that I need because I'm consistent and predictable about where I place things; I don't struggle to tell where something begins and where it ends because I'm consistent about structure; I don't continually hate myself when I need to make changes to my code because I don't do anything wildly out of the ordinary; and most importantly, I take my time to figure out what it is that I need to do and how I want to do it before I've written a single line of code.

      When I needed to add a web portal interface for uploading a media asset to associate with a database object, the initial implementation took me a week, due to the need for planning, adding the interface, and supporting and debugging the asset management. When I needed to extended that interface to allow for uploading the same kinds of assets for a completely different object type, it took me only half an hour, with most of that time being dedicated toward updating a Vue.js component to accept configuration via props rather than working for only the single hard-coded object type. If I need to add a case for any additional object type, it will take me only five minutes.

      That initial week of work for the web interface provided me with cost savings that would not have been feasible otherwise, and that initial week of work would have taken as many as three weeks had I not structured the API to be as consistent as it is now. Every initial lag in implementation is offset heavily by the long-term cost savings of writing good code.


      Technical Debt

      Technical debt is the cost of your code over time. The messier and worse your code gets, the more it costs you to try to change, and those costs only build up. Even good code can accumulate technical debt if the needs for your software have changed and its current architecture isn't compatible with those changes.

      No project is without technical debt. Even my own code, that I've been painstakingly working on for the last couple of months, has technical debt. Odds are a programmer far more experienced than I am will come along and want to scrap everything I've done, and will do a far better job rewriting it.

      That's okay, though. In fact, a certain amount of technical debt is good. If we try to never write any bad code whatsoever, then we could never possibly get to writing any code at all, because there are far too many unknowns for a new project.

      What's important is knowing when to pay down on that technical debt, which could mean anything from paying it up front (i.e. through planning ahead of time) to paying it down when it starts to get too expensive (e.g. refactoring a complicated section of code when changes become sufficiently difficult). That's not something you can learn through a StackOverflow post or a college lecture, and certainly not from some unknown stranger on some relatively unknown website in a long, informal blog-like post.


      Final Thoughts

      I'm far from being a great programmer. There's a lot that I don't know and I still have quite a bit to learn. I love programming, though, and more than that I enjoy sharing the lessons I've learned with others. Especially the ones that I wish I'd learned back in college.

      Please feel free to share your own experiences, learned lessons, and (if you have it) feedback here. I'd love to read up on some other thoughts on this subject!

      21 votes
    46. What are you reading this week? #1

      What are you reading currently? Fiction or non-fiction, any genre, any language! Tell us what you're reading, and talk a bit about. Edit: I have two "votes" currently, including mine, for the...

      What are you reading currently? Fiction or non-fiction, any genre, any language! Tell us what you're reading, and talk a bit about.

      Edit: I have two "votes" currently, including mine, for the questions below. Currently I have 2 votes for bi-weekly, two for on Fridays, and the other voter has agreed that I keep making these posts. So, I've scheduled the next "What are you reading this week?" discussion for the 14th Sep Fri.

      P.S.: This is the first instance of what I want to make a weekly recurring topic. I've asked here yesterday whether would people like it, and because that suggestion was supported w/ upvotes and comments, I decided to go ahead and start doing this. Because this is the first such topic, I'd be glad if you could answer these questions too: (1) weekly, biweekly or monthly; (2) on fridays or on mondays; (3) who should post these topics, me, or someone else? Any suggestions and objections are welcome!

      My intention is that I post this topic every Friday from now on, with these contents (w/o the postcriptum here), and usually start it out with a comment on what I'm reading. IDK if the discussion on moderators is concluded and what sort of a decision has been made, but in any way if you think someone other than me would be a better fit for doing this, please tell me.

      33 votes
    47. What have you been listening to this week?

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something! Feel free to give recs or discuss anything about each others'...

      What have you been listening to this week? You don't need to do a 6000 word review if you don't want to, but please write something!

      Feel free to give recs or discuss anything about each others' listening habits.

      You can make a chart if you use last.fm:

      http://www.tapmusic.net/lastfm/

      Remember that linking directly to your image will update with your future listening, make sure to reupload to somewhere like imgur if you'd like it to remain what you have at the time of posting.

      15 votes
    48. ~music Listening Club 11 - Lift Yr. Skinny Fists Like Antennas to Heaven!

      Hey! We're on week 11, and it's time for another classic record discussion: Godspeed You! Black Emperor's Lift Yr. Skinny Fists Like Antennas to Heaven! Here's the place to discuss your thoughts...

      Hey! We're on week 11, and it's time for another classic record discussion: Godspeed You! Black Emperor's Lift Yr. Skinny Fists Like Antennas to Heaven!

      Here's the place to discuss your thoughts on the record, your history with it or the artist, and basically talk about whatever you want to that goes along with Lift Yr. Skinny Fists Like Antennas to Heaven! Remember that this is intended to be a slow moving thing, feel free to take your time and comment at any point in the week!

      If you'd like to stream or buy the album, it can be found on most platforms here.

      Don't forget to nominate and vote for next week's obscure record in response to this comment!

      11 votes
    49. Movie Monday Free Talk

      It's Monday again, and that means it's time for Movie Monday, a thread where anyone and everyone is welcome to post a movie review about films that they've seen recently, or just liked or disliked...

      It's Monday again, and that means it's time for Movie Monday, a thread where anyone and everyone is welcome to post a movie review about films that they've seen recently, or just liked or disliked in the past.

      If you're wanting to post a review, I'd suggest reading trough Movie Monday: week 1 to read through the rules and what to write, but for the most part I'm trying to keep this as simple as possible.

      The two rules that I do have are: So far, the only rules are:

      All top level comments should be reviews. (if you have any questions or suggestions on how to do things differently, either send me a private message or post in the discussion thread I linked up above)

      No spoilers in top level comments. Ideally any spoilers should be in children comments (with sufficient warning) if you wish to write a review with spoilers, make another comment below your top level comment and write the spoilers there. Anyone who doesn't want to know any spoilers should un-expand the comments at the top before they start reading comments. Hopefully this should allow discussion of both the film and the review without forcing people to see spoilers.

      But other than that, happy Movie watching and have a great Monday :)

      10 votes