1.  

    I have to work on Saturday but I still have some things planned for this weekend:

    • I bought a kobo clara HD and started to read my first book on it, it’s about golang. I would like to just get an ‘hello world’, something that will write to a file and something that will fetch the json of a url and ‘parse’ it. To be completely honest I have no idea if this is highly optimistic or not, but we’ll see.
    • I went to Redhat’s Ansible Automates tour and decided I should stop maintaining my own playbooks. I did multiple tests during evenings this week and I like what I see. I also discovered a bug in ansible 2.5 or 2.6 was fixed and that allows me to dynamically include roles from a yaml I include on the fly. Still need to finetune more but it’s looking ok
    • buying Christmas presents is also high on my list for this weekend, I hope to really finish that one.
    1.  

      Go is not a great language for processing JSON. I have been banging my head against it for years. It might not be a great starting place.

      1.  

        hmm, i was under the impression that Go is pretty good for processing JSON. Can you provide some examples?

        I haven’t used Go in production yet but was going to use it for my next project, this might change things.

        1.  

          Here’s some production example I have which is parsing Prometheus metrics return:

                  metricsMap := make(map[string]interface{})
                  if err := json.Unmarshal(body, &metricsMap); err != nil {
                          return nil, err
                  }
          
                  retMap := []map[string]interface{}{}
          
                  metrics := metricsMap["data"].(map[string]interface{})["result"].([]interface{})
                  if len(metrics) == 0 {
                          return &retMap, nil
                  }
          
                  for _, m := range metrics {
                          metric := m.(map[string]interface{})["metric"].(map[string]interface{})
                          retMap = append(retMap, metric)
                  }
          
                  return &retMap, nil
          

          It works, it’s all stdlib, but cludge-y sounds right.

          1.  

            Yeah, i tried implementing it using the struct pattern(?) and am not sure if it looks any better

            https://play.golang.org/p/hQFozwUjn7V

            1.  

              You can remove the json:"..." annotations when fields are named the same (capital leter at front is matched when parsing), and in this case also inline more structs, and then you get: https://play.golang.org/p/9xWMnrjc9Hw. The structs is how it’s generally intended to be used. Anyway, static typing requires the types to be written at some point, so there’s no avoiding this, if you want to keep the advantage of a typed language. You can look at the types list as a “schema” for the JSON. In the end, I don’t really understand what’s “not looking any better” here.

              1.  

                I found this helpful for quickly generating golang structs from example json: https://mholt.github.io/json-to-go/

          2.  

            Go has standard library support for JSON, so I’m not sure how it’s lacking. Dealing with optional keys or variable structures is a bit cludge-y, but that’s a problem in most typed languages.

            1.  

              I found Go’s JSON support to be great but potentially confusing for beginners due to Go’s weird mix of high and low level abstractions.

              It’s not as simple as, say for example, Python’s JSON support where you load the file and it spits back a Python Dict you can use.

              1.  

                To be honest I was kind of hoping it would be more python-like, but it is what it is. I want to give go a try at least and the use case I’m having in mind seemed perfect for it. Unfortunately it will require json that’s highly dynamic so I’m not sure how to tackle this but I’ll give it a a try.

                1.  

                  Yeah it’s absolutely NOT python-like, and its adherents see this as very much a feature, not a bug.

                  Not every programming language is for everyone, and it’s not exactly clear that Go is for me, at least for a lot of the work I do most of the time.

              2.  

                I’m not sure how it’s lacking

                exactly.

                I generally use points for optional fields which are nil & use json.RawMessage for data that is structured like a tagged union.

                1.  

                  Have you tried implementing json.Unmarshaler for the tagged union fields? I’d expect it’s one of the use cases where it should be useful?

                  1.  

                    I use this pattern generally.

                    I haven’t used Unmarshaler before but if I understand correctly, it would be helpful when there is only one ‘output’ struct.

                    1.  

                      My idea, applied to your example, would be something more or less like this: https://play.golang.org/p/MKCosTwXa6N. Depending on how you’d want the data structures to look in the end, there’s some wiggle room for tweaking this/reframing somewhat differently.

                      1.  

                        ah, thanks!

                        this would have been perfect if we had sum types. type Error = NotFound | Denied

          3.  

            I don’t understand the bit about Ansible playbooks - what does it mean you’re not going to maintain them yourself? then who’s gonna do it for you?

            1.  

              Ansible Galaxy is basically a place where you can publish roles and other people can download them. There are a lot more talented people maintaining playbooks and it always costs me time when a major new version comes out. After talking to some people at the event I just figured I’d at least try using one or 2 roles to see where I got, and I ended up migrating 70% of everything in an hour or 2. The geerlingguy’s roles are what I’m using.

            2.  

              Regarding parsing JSON with Go, I agree that it can be difficult, but you can make your life much easier by using the GoJSON tool. It automatically generates struct definitions from the JSON that you provide for it. Hope you find this useful!

            1. 6

              I might think the process is just overwrought and not rife with useless steps / conflating things in a non-malevolent way until I got the the 8 written questions “essay exam” part. Then I would probably drop out of the process and just work somewhere else.

              1. 3

                Being able to write and communicate well is such a crucial part of software engineering, especially on a long-lived product maintained by a group of engineers with the inevitable membership churn that happens over many years. Strong writing skills also help with the kind of asynchronous communication that often works best with remote teams who might have members in far flung time zones, and when collaborating with members of open source communities.

                At least, those are things I believe are important. The written questions are not meant to take a long time to answer, though because we don’t ask you to answer them in front of us you can really take as long as you want. For folks that get nervous under exam or interview conditions, hopefully the chance to polish their thoughts in writing at their own pace also affords a chance to demonstrate clarity of thought and breadth of experience in a lower stress setting.

                At the end of the day, it’s true that no process (or job!) will fit everybody. Though the RFD is certainly detailed, it represents a level of transparency with applicants that I’m not sure is that common in our industry. It also helps us in our attempt to give each candidate a consistent treatment.

                1. 2

                  Of course writing skill is important. It’s important in nearly every industry, yet no other industry that I have ever heard of assigns essay question homework. Only in the software industry does this “dancing bear” mentality predominate, where most employers are wholly unwilling to look at any existing work product the candidate may have, instead demanding that the candidate produce new work (for free) especially for evaluation. It’s abusive and should be illegal.

                  1. 1

                    If you take a closer look at the RFD, you’ll see that the written answers we’d like are not dissimilar to regular interview questions, except that we’re asking you to write instead of asking you in person. They’re not some exercise which is suspiciously close to asking for free labour relevant to our shipping product.

                    In addition, for the other artefacts we ask for such as a code sample, we’re perfectly happy to accept any code you’ve written already which meets the criteria.

                    These interviews are for professional positions with an agreeable salary, where much of the work you do will be extremely collaborative – with other engineers and with customers. I don’t think it’s exploitative to ask for you to write a little about yourself when you’re applying for a job like that.

                    1. 3

                      Again, no other industry requires this hoop-jumping, even for much more senior positions than that of an individual-contributor engineer. I’ve observed my partner go through the interview process a couple times, for positions with dozens of people in the reporting chain and millions of dollars in budget. She is often asked to provide writing samples from work product she’s created at previous jobs, but I don’t recall a single instance where she was asked to do the kind of homework that is routine for even the most junior software job. I have not seen any evidence that the software hiring process yields better results than the process used in every other field.

                      Homework excludes people with childcare and other responsibilities, and it also makes it very difficult to interview with more than one or two companies at a time, which puts the candidate at a disadvantage as far as finding the best available offer.

                      1. 1

                        Again, no other industry requires this hoop-jumping, even for much more senior positions than that of an individual-contributor engineer.

                        I think that’s a very broad generalisation and though I appreciate you’re relaying your personal experience, I’m not convinced it’s universally true.

                        She is often asked to provide writing samples from work product she’s created at previous jobs

                        Which, if you’ll look at the RFD, describes most of the artefacts we request. A writing, code, and analysis sample, each of which can absolutely be from previous jobs or from open source work or from a portfolio you already have. We’re willing to look at anything you’re allowed to show us, even if it’s not something you can or wish to post in public.

                        Of course, if you have none of these things at all, we do ask you to produce something specifically for your application. We try to make it clear that you shouldn’t spend an undue amount of time on it.

                        Homework excludes people with childcare and other responsibilities

                        I have a son, and certainly raising him takes a lot of time and energy. One of the reasons I love working for Joyent is that everybody is very understanding of this, and I have no trouble making flexible arrangements to attend important events or to stay home when he’s sick.

                        Assuming you have existing samples, the only pre-interview thing we’re asking you to do is answer a few questions about yourself in an e-mail. We’ve tried to keep the list of questions long enough to give us some insight into you and your ability to write, while short enough not to be burdensome – even for those with family and other responsibilities.

                        Hiring is complicated, as is finding the right job for you personally. We aim to be a workplace where people feel like they can (and want to!) build a career, hopefully on the time scale of at least years. I’ve been with Joyent for six years, myself. With that in mind, an hour or less spent answering some questions is hopefully not too much to ask, especially if you would like to work with us on the products we build!

                        1. 2

                          I do appreciate that Joyent allows you to provide existing work. My complaint is really about the majority of software hiring managers who are not willing to do that and want you to do their specific coding exercise.

                          I think that’s a very broad generalisation and though I appreciate you’re relaying your personal experience, I’m not convinced it’s universally true.

                          I’d certainly be interested to hear about examples of other fields which require similar things of job candidates. Offhand, the performing arts are the only examples that come to mind.

              1. 1

                @zpojqwfejwfhiunz@hackers.town

                I was having a Bad Time on the fediverse until I switched instances. Now it is much better. This is in stark contrast to the initial advice I received from many people who told me just to pick any ol’ instance.

                1. 4

                  This is from 2016, and claims that Chez Scheme is commercial-only. This is no longer true, as it was released as Open Source with an Apache 2 license earlier this year.

                  1. 2

                    Similarly, it says CHICKEN is R5RS-only, but we support R7RS now too.

                    Part of the problem is that one you pick a Scheme implementation, you’re almost always “locked in”: you can’t easily migrate to another.

                    This is what R7RS (and R6RS before it) tries to solve by standardising a module system. So, hopefully, this problem is a little less bad in the future. You’ll still need add-on libraries but you see that people are slowly trying to make more portable extensions. Of course extensions that integrate with C or the JVM won’t be portable (though with cond-expand it should be doable to write a library that uses the FFI from the Scheme you’re targeting… I should do an experiment to see how easy that is)

                    Chicken compiles to C, so to distribute, you can either distribute binaries or C sources which the user can build without installing Chicken. Super-easy.

                    This has become even easier now with CHICKEN 5, which has full support for static binaries!

                    1. 1

                      I would update the title with (2006) but it has been more than a few hours and I can’t edit it any more. Nor can I suggest tag or title changes because I’m the submitter.

                      1. 1

                        I was considering doing just that, I am interested to find out what areas Lobsters require titles as there may be some I am missing?

                        Are there any other links or abbreviations that really need a title?

                      1. 2

                        It would be really helpful if the README had a note about browser compatibility.

                        1. 5

                          Most interesting bit of this release for me is that there’s an official terminal client now!

                          https://github.com/zulip/zulip-terminal

                          1. 8

                            My two cents: find a way to make remote work maintainable for you.

                            1. 5

                              Agreed.

                              I’ve looked at coworking spaces, but finaicially it’s not a possibility right now. The company also will not reimburse for it.

                              They might change their tune if they knew that not having a coworking space is making you consider leaving the company. If you can make it clear that this is a requirement for your job and the alternative is hiring someone else, then in most cases they will pay for it.

                              1. 1

                                I’ve never really considered this way of thinking.

                                I would assume most companies would just view you as dead weight or an extra cost (why give this remote worker money to co-work when I am saving money by not having them in the office)

                                1. 1

                                  It depends on how replaceable you are of course, but the cost of training a replacement for many folks who write and operate software is very high, so people are incentivized to avoid that kind of disruption.

                                  1. 1

                                    I agree completely! I suppose I’m just jaded from previous jobs where most people had left until it was only contractors left (no full time employees left)

                              2. 3

                                is that because you think the startup opportunity is too good to walk away from? or remote work is too good to walk away from? or a combo?

                                1. 10

                                  I’m not /u/zpojqwfejwfhiunz, but I agree with him on this.

                                  Being remote gives you a lot of flexibilty, and there are quite a few ways to work outside of the house that don’t have to involve being in a co-working space, such as coffee shops or parks. This may not work as well on meeting days, but it is worth investigating. Also, if you’ve not been taking advantage of working remotely, maybe start trying to get creative about flexing those privileges.

                                  Does your current company pay for you to visit them once in a while? Are you living with anyone? Can you have pets in your current housing? Do you have regular social contact with people that will help you grow? I know for me, working remote allowed me to move closer to family and friends I hadn’t seen in a long time, which did far more to attack the problem of lonliness than working in an office did. I moved 1300 miles to pull that off. Perhaps that sort of move might make sense for you?

                                  I would attack the lonliness angle from outside of work before I would switch to working at a local company, and I’d do a lot of research on the local company before I switched. Maybe make a friend or acquaintance there via a shared social gathering, or the like, and get a sense of what the company politics are like, or if people there like the company culture. It sounds like you have great co-workers, that’s not something to be set aside lightly.

                                  In other words, take advantage of working remotely to be able to surround yourself with people that will build you up. If you can’t figure out a way to make that work (and you have been working remotely for 4 years, so that seems quite possible), then I’d consider working in an office, but not before.

                                  1. 9

                                    such as coffee shops or parks

                                    …and libraries!

                                    Libraries are so undervalued it’s unreal. I’ve been working remotely for the past 4/5 years, and while I do sometimes work from cafés, there is an implicit social pressure to keep buying things to justify taking up a table. No such problem with a library. If you’re in a big city, these can be incredibly beautiful buildings too.

                                    1. 3

                                      Thats such an amazing idea. If I go remote this would be my main place to work at. Its such a nice building but I rarely have a reason to go there.

                                      1. 3

                                        Thats such an amazing idea. If I go remote this would be my main place to work at. Its such a nice building but I rarely have a reason to go there.

                                        It’s cool, I’ve tried it - only downside is private rooms for calls are not always around.

                                    2. 4

                                      thanks for the well thought out reply!

                                      • certainly going to attempt working outside a bit more
                                      • social contact with others seems to be a common thread, not currently doing much of that
                                      • approaching the local company from the inside makes a lot of sense
                                      1. 3

                                        Yeah, when you’re working remotely, being able to fill your social needs outside of work is key.

                                        In some ways, you could view it as an advantage of working remote. After all, you don’t have a commute, that frees up some of that time to be spent elsewhere. Be intentional about spending it elsewhere.

                                        1. 4

                                          Along these lines, I personally find that limiting media consumption is critical. It’s better to force yourself to be bored than to always have the TV on or be staring at a screen. That boredom will force you to find other hobbies. Ideally, you’d find at least one athletic hobby, and at least one social hobby.

                                1. 2

                                  The last release was in April last year. Is the project done or dead?

                                  1. 4

                                    There has been a lot of work going on fixing bugs and landing PRs (up through this morning, in fact!). They just haven’t tagged a release, which can happen any time. Capstone and the related projects have seen more releases this year but keep an eye on Twitter, the mailing list, or the Github repos for a release.

                                    Commits to master branch since last release: https://github.com/unicorn-engine/unicorn/compare/1.0.1...master

                                  1. 16

                                    In the famous words of Henry IV:

                                    A public-domain, small, time-worn, and battle-tested on-disk relational database is well worth a mass.

                                    1. 24

                                      Now is the winter of our disk-contents

                                      1. 1

                                        I had a good laugh. Thank you, both!

                                    1. 2

                                      It seems really surprising that the HGST drives are doing so much better than the WDCs, when HGST is owned by WDC.

                                      1. 6

                                        This year WD closed a facility in Malaysia (Petaling Jaya to be exact, closing totally by the end of 2019), leaving them with two remaining production plants, both of which are in Thailand (Bang Pa-In, Prachinburi). They do share some manufacturing in the WD facility in Prachinburi but HGST appears to produce nearly all drives from one plant in Shenzhen, China. Since the acquisition, the R&D, sales teams, and leadership for HGST has remained largely separate.

                                        I’m a little surprised by the plant closure by WD this year, especially after the global HD shortage following the 2011 Thailand floods. Perhaps they see the HGST subsidiary as enough of a hedge, especially as the SSD and NAND flash memory markets are booming with HDDs slowly trailing off.

                                        1. 3

                                          Oh cool, thanks for the information! So they really are effectively a whole separate organisation, despite the ownership. Or at least the manufacturing is.

                                          1. 2

                                            The manufacturing is separate for HDDs and, if you recall, China’s MOFCOM made them maintain independent brands and sales teams for 2 years, but the new leadership structure that emerged right away was described thusly: “all key positions are with HGST people; it’s a reverse buyout” which gave me hope. Since that time has elapsed, the label on the 12TB drives Backblaze is using (and they list as HGST onthe chart) now says “Western Digital” on it despite it being a HGST manufactured P/N: https://www.hgst.com/products/hard-drives/ultrastar-dc-hc520 which may be confusing in the near-term as the brands continue to merge. You’ll have to consider each SKU for reliability and not rely strictly on the brand name.

                                            1. 1

                                              if you recall

                                              No, I never paid attention to any of this at the time, so I definitely don’t recall. ;)

                                              Thank you.

                                              You’ll have to consider each SKU for reliability and not rely strictly on the brand name.

                                              Bugger.

                                      1. 2

                                        Here is the description of the talk (since none is provided on Youtube):

                                        VeniceDB is an OLAP cluster built on top of Citus/Postgres. Currently it hosts about 60TB of Windows Core measure data set to support a portion of executive decision dashboard named Mission Control for Windows executives and engineers to assess various Windows component qualities on a daily basis. VeniceDB is still young as a service, the demand has already been growing.

                                        Traditionally the Windows device centric measure data servicing is done through OLAP cubes generated via MapReduce batch jobs on Cosmos (Hadoop like). Due to the dimensionality growth, it’s not economic feasible to maintain the Cubing jobs. We evaluated various technologies before landing on Postgres.

                                        This talk is going through our journey from MapReduce to MPP, and why choosing Postgres and Citus as the underlying platform.

                                        1. 5

                                          Official page just launched as well (where you can sign up for beta access): https://github.com/features/actions

                                          1. 2

                                            Would the features they’re talking about be feasible with CRDTs at the core instead?

                                            1. 2

                                              If you’re interested in this and haven’t already read https://arxiv.org/pdf/1810.02137.pdf then you’ll probably find it interesting.

                                              1. 1

                                                Yes, but they chose OT and may describe why later.

                                                There are several approaches to implementing conflict resolution in real-time collaborative editing. Two main candidates are Operational Transformation (OT) and Conflict-Free Replicated Data Type (CRDT). We chose OT and perhaps one day we will write down our thoughts on the ongoing OT vs. CRDT battle.

                                              1. 12

                                                I’m going to start reading William Gibson’s “Neuromancer” novel. If I can find the time, I also want to begin reading Katsuhiro Otomo’s “Akira” manga series, published back in 1988.

                                                1. 3

                                                  If you make it through Neuromancer, you might want to check out his anthology Burning Chrome. Probably my favorite works of his.

                                                  1. 1

                                                    That’s certainly the plan, going through all of Gibson’s work. Thanks for the recommendation.

                                                    1. 2

                                                      Oh no, don’t read all his work. The gems are:

                                                      • Burning Chrome (short story collection, 1982)
                                                      • Sprawl trilogy
                                                        • Neuromancer (1984)
                                                        • Count Zero (1986)
                                                        • Mona Lisa Overdrive (1988)
                                                      • The Difference Engine (1990), an alternative history novel Gibson wrote with Bruce Sterling

                                                      Personally, when I do a re-read, I stop there. If you’re still really keen, go on to:

                                                      • Bridge trilogy
                                                        • Virtual Light (1993)
                                                        • Idoru (1996)
                                                        • All Tomorrow’s Parties (1999)

                                                      Just beware that they totally lack the lyrical writing that people find so gripping in the Sprawl trilogy. All of his works after 2000 take place in the very-near-future or the present and have straightforward stories and themes. I don’t find them compelling whatsoever and they generally get mixed reviews (in contrast with the universal acclaim of his earlier work).

                                                      1. 2

                                                        That makes depressing sense - cyberpunk dystopia is no longer fiction, nor is it in the future. Though I haven’t read his work so that’s easy for me to say.

                                                        Thank you for the recommendations, it’s good to know where to start!

                                                        1. 2

                                                          Thank you. I’m gonna do what you suggest, and will dive into his other stuff in case I feel curious.

                                                          1. 2

                                                            I agree with your summary but I’d like to add that I really enjoyed one of his modern books as well: ‘Pattern Recognition’

                                                            1. 1

                                                              Heh. Horses for courses I suppose! It’s been a while since I read them now but I remember liking the bridge trilogy (though not as much as the sprawl ones) but I hated Difference Engine and found it a dreary slog that I struggled to get through.

                                                        2. 2

                                                          great choices, Akira is epic. I want to finish reading Snowcrash at some point!

                                                          1. 2

                                                            I am amazed you could put Snowcrash down.

                                                          2. 1

                                                            SUCH a good set of books!

                                                            1. 2

                                                              Thank you. I’m really excited by Gibson’s. Considering the fact it was the first time the term “cyberspace” was used.

                                                            2. 1

                                                              Neuromancer is amazing. Enjoy :-)

                                                              1. 1

                                                                Great! I’m even more excited about it.

                                                              2. 1

                                                                I am so jealous you have not read Gibson yet.

                                                                1. 1

                                                                  I know that feeling to experience great things for the first time. It’s certainly a grateful experience.

                                                              1. 2

                                                                Whoever attempts floating-point calculation with JavaScript is, of course, in a state of sin.

                                                                John von Neumann, probably.

                                                                1. 1

                                                                  What language should one use for floating point calculations?

                                                                  1. 6

                                                                    TCL, of course, because EIAS!

                                                                    1. 3

                                                                      In most languages there are libraries to deal with precise numbers. For example, you can use Decimal in Python. https://docs.python.org/3/library/decimal.html

                                                                      But it may not be as fast or have other inconveniences (for example, defining explicitly the precision)

                                                                      1. 2

                                                                        There are some good examples in the list @HugoDaniel posted in this thread.

                                                                        Here’s something interesting for JS: http://mikemcl.github.io/decimal.js/

                                                                        1. 1

                                                                          If you want it to work correctly, then probably SPARK, C w/ tooling, or Gappa w/ language of your choosing. If performance isn’t an issue, there’s a pile of languages with arbitrary-precision arithmetic plus libraries for those without it. I’d say that’s the options.

                                                                          Meanwhile, there’s work in formal methods on Exact-Real Arithmetic that could give us new options later. There was an uptick in it in 2018. I’m keeping an distant eye on it.

                                                                      1. 6

                                                                        Sorry to hear that!

                                                                        Hey, I have some Jaybirds too, I think the X2 but I’ll have to check. I literally never use them and have all the original differently-sized attachments. They work great, I just never had a use for them. PM me and I’ll mail them to you.

                                                                        1. 29

                                                                          Patterns were never supposed to be applied. They were supposed to give names to common patterns that programmers everywhere were already using. By having a common vocabulary, programmers are supposed to better understand one another. When I say a structure and its methods proxy another structure, programmers know what I mean because they are familiar with the proxy pattern.

                                                                          GoF went too far by defining dozens of patterns with subtle, and mostly pointless, differences. There are only a dozen or so patterns that every programmer should know, things like Proxy, Adapter, Strategy, Visitor, Observer. Beyond that is too detailed for wrote memorization and the remaining patterns can sit in reference. Many of the common patterns are domain specific, e.g. all of the data access patterns like ActiveRecord and Repository. If you don’t write applications talking to databases, you may well never need to know about those patterns.

                                                                          Finally, the worst part of patterns was the tendency of programmers to read some pattern book and want to use every pattern, or their favorite ones, in their current codebase, wether it was applicable or not.

                                                                          1. 9

                                                                            Yes, building a vocabulary is a good way of thinking about it.

                                                                            Instead of “curved sequence of stones supporting each other going up and then down left to right”, we can say “arch”.

                                                                            Patterns are a level of abstraction above that of types+functions, below that of a module/package.

                                                                            1. 6

                                                                              rote*

                                                                              1. 2

                                                                                Patterns were never supposed to be applied.

                                                                                Here’s the list of steps from section 1.8, “How to Use a Design Pattern” of the Design Patterns book:

                                                                                1. Read the pattern once through for an overview.
                                                                                2. Go back and study the Structure, Participants, and Collaborations sections.
                                                                                3. Look at the Sample Code section to see a concrete example of the pattern in code.
                                                                                4. Choose names for the pattern participants that are meaningful in the application context.
                                                                                5. Define the classes.
                                                                                6. Define application-specific names for the operations in the pattern.
                                                                                7. Implement the operations to carry out the responsibilities and collaborations in the pattern.

                                                                                This followed a longer discussion on how patterns solve problems and how to select one for your design needs. This really feels applicative to me. The book does say not to apply them indiscriminately (see last paragraph of chapter 1).

                                                                                I agree that they are probably better used as vocabulary. Based on skimming the beginning of the book and reminding myself of the contents, I do not agree with the interpretation that they were not meant to be applied.

                                                                                1. 4

                                                                                  I think @jrwren meant that the original pattern language by Christopher Alexander qas intended that way and after porting these ideas in the software community the misunderstanding startet.

                                                                                  Although I do think that pattern. Were always also thought of as something you could imitate. It is just that we have applied then on the “micro” scale.

                                                                                  Alexander’s patterns really operate on another level, take the intimacy gradient pattern https://www.kerryveenstra.com/2016/12/27/intimacy-gradient/

                                                                                  The visitor pattern in comparison would be on the level of how to put brick upon brick or something. Whereas many alexandrinian patterns describe city planning etc.

                                                                                  So maybe it’s time to look for patterns worth describing. I think one aspect I would like to see in software patterns is the question how can software be a hospitable place for individual users and communities.

                                                                                2. 2

                                                                                  Yup.

                                                                                  Patterns are reoccurring solutions to a reoccurring set of constraints…

                                                                                  Which is a strong Heads Up that unless every single one of those constraints are present…. there exists a simpler solution.

                                                                                  ie. If it’s in the GoF book, odds on you don’t need it.

                                                                                  1. 2

                                                                                    Well said. I didn’t mention the importance of “every single one of those constraints” Thank you for reminding me!

                                                                                1. 2

                                                                                  Hacking Faster Than Voting: ​This year DEF CON also demonstrated that while, on average, it takes about six minutes to vote, machines in at least 15 states can be hacked with a pen in two minutes. It is thus possible for someone to hack a machine while voting in a polling place on Election Day.