10,000 Matching Annotations
  1. Apr 2021
    1. In many computing contexts, "TTY" has become the name for any text terminal, such as an external console device, a user dialing into the system on a modem on a serial port device, a printing or graphical computer terminal on a computer's serial port or the RS-232 port on a USB-to-RS-232 converter attached to a computer's USB port, or even a terminal emulator application in the window system using a pseudoterminal device.

      It's still confusing, but this at least helps/tries to clarify.

    1. This is hard because Apple does not want you to and a failed installation might render the ipad useless.
    2. Also you will not be able to run any iOS apps anymore obviously.
    3. If you want to run a full fletched linux OS on the ipad an option is to jailbreak the ipad and try to install linux. This is hard because Apple does not want you to and a failed installation might render the ipad useless. Also you will not be able to run any iOS apps anymore obviously.

      new tag?: jailbreaking a device

    4. A well formulated question deserves a proper answer
    5. Opening "xterm" in "iSH" is like starting a new virtual terminal from a virtual terminal you are already in ("iSH").
    6. As far as the 'iSH' app is concerned: it seems that it merely emulates a virtual terminal.
    7. A "tty" neither has anything to do with rendering text.
    8. The virtual terminal process resides in kernel space (called the console).It reads from the "tty", say the output from the "ls" process and renders the text. It interacts with the VGA driver to do so.
    9. Then who is responsible for the actual rendering?
    10. The (virtual) terminal (not the "tty") plays a central role here
    11. I didn't get exactly how pty came into picture and what is the usage of that. Looking forward to get more info on that.
    12. How is related /dev/ack with /dev/tty?
    13. as you may have guessed, things get even more complicated when you start running pseudo terminals inside pseudo terminals, à la screen(1) or ssh(1).
    14. To facilitate moving the terminal emulation into userland, while still keeping the TTY subsystem (session management and line discipline) intact, the pseudo terminal or pty was invented.
    15. By default, fork(2) places a newly created child process in the same process group as its parent, so that e.g. a ^C from the keyboard will affect both parent and child.
    16. But the shell, as part of its session leader duties, creates a new process group every time it launches a pipeline.
    17. Job control is what happens when you press ^Z to suspend a program, or when you start a program in the background using &
    18. A job is the same as a process group.
    1. Work with the open source languages you love without the hassles of runtime management.

      What is runtime management?

    2. Your Open Source Supply Chain Is Bigger Than You Think.Reduce your security, risk, and compliance load. Let us scan your Python, Perl, and Tcl application for you and help you gain the transparency you need to reduce open source risk.
    1. The question talks about stdout but the title mentions stdin. I think the title is wrong.

      Refers to old title, as seen here

      Trick an application into thinking its stdin is interactive

    2. If there are some pipe between these commands, you need to flush stdout. for example: script -q /dev/null commands... | ruby -ne 'print "....\n";STDOUT.flush'
    3. unbuffer works with piping to less. That may be an easier syntax than what you've got.
    4. Is there an OS agnostic way of doing this? I like the script command on macOS because you don't have to wrap the command in quotes. The script runs and sends output to the tty which is duplicated in the supplied file, but I can't seem to get the linux version to behave the same way... I'm probably doing something wrong. So what's the equivalent linux script command for this on macOS: script -q -t 0 tmp.out perl -e 'print "Test\n"' Test cat tmp.out Test
    5. The quirky looking printf is necessary to correctly expand the script's arguments in $@ while protecting possibly quoted parts of the command (see example below).
    6. I came up with the following little helper function
    7. faketty() { script -qfc "$(printf "%q " "$@")" /dev/null }
      faketty() {
          script --return -qfc "$(printf "%q " "$@")" /dev/null
      }
      

      Now:

      ⟫ faketty python -c "import sys; print sys.stdout.isatty(); exit(1)" ; echo $?
      True
      1
      
    8. You probably want to use the --return option, if your version of script has it, to preserve the child process' exit code.
    9. This doesn't work in cases where the component checking for interactivity is looking at the $- shell variable for an "i"
    10. If you want to pipe it into something interactive, like less -R, where terminal input goes to less -R, then you need some extra trickery. For example, I wanted a colourful version of git status | less. You need to pass -R to less in order that it respect the colours, and you need to use script to get git status to output colour. But we don't want script to keep ownership of the keyboard, we want this to go to less. So I use this now and it works well: 0<&- script -qfc "git status" /dev/null | less -R . Those first few characters close stdin for this one commmand.

      Just git status | less -R worked for me without any additional trickery, but I see now that's because I told it to "always" use color in my .gitconfig:

      .[color]
        ui = always
        status = always
      

      I tried disabling that and then trying the

      0<&- script -qfc "git status" /dev/null | less -R
      

      trick, but it didn't work for me. It didn't show any output and I couldn't exit out with Ctrl-C or anything I tried. Had to force kill from another terminal.

      But it's a good example of the related but different problems:

      1. forcing less to respect colors (easy)
      2. force/trick git status to think it has a terminal
      3. force/trick it so you can control keyboard with less
    11. if you really need the child process to see a TTY, you can create a PTY.
    12. 0</dev/null script --quiet --flush --return --command "$(printf "%q " "$@")" /dev/null
    13. I also added --return and used long options, to make this command a little less inscrutable:

      first sighting: "inscrutable" Nice word!

    14. Too new to comment on the specific answer

      So you think it's better to make people post a new "answer" (as if it were actually a distinct, unrelated answer) instead of just letting them comment on the answer that they actually want to comment on? Yuck.

    15. I'm trying to do the opposite of "Detect if stdin is a terminal or pipe?".
    1. TTY is right there in the name, but this article makes no attempt to clarify what exactly the relationship between a pseudoterminal and a TTY. I feel like a whole paragraph about the relation to TTY would be warranted, including a link to TTY article, of course, which does link [back] to and explain some of the relation to pseudoterminal:

      In many computing contexts, "TTY" has become the name for any text terminal, such as an external console device, a user dialing into the system on a modem on a serial port device, a printing or graphical computer terminal on a computer's serial port or the RS-232 port on a USB-to-RS-232 converter attached to a computer's USB port, or even a terminal emulator application in the window system using a pseudoterminal device.

    2. Screen and Tmux are used to add a session context to a pseudoterminal, making for a much more robust and versatile solution. For example, each provides terminal persistence, allowing a user to disconnect from one computer and then connect later from another computer.
    3. The terminal emulator process must also handle terminal control commands, e.g., for resizing the screen.
    4. The Windows Console was extended to have a PTY interface called ConPTY in 2018.
    5. In the BSD PTY system, the slave device file, which generally has a name of the form /dev/tty[p-za-e][0-9a-f], supports all system calls applicable to text terminal devices.
    1. but our first title The Detail will be pulled from Steam and AppStore at some point.
    2. Work-life balance However, I recently understood that while we were working on the game, I broke the one and only rule I set for the founders of the company: always family first. My wife was expecting our second child and I was working long days at the office, and I became obsessed with making sure the game is as good as possible. The same probably applies to everyone in the team, since we shared love and passion for the franchise.
    3. On iOS, the figures are close to the same except there the game has been for free for a while already.

      why do publishers make games free on iOS or sometimes Android but not for PC?

    1. no big deal, the episodes are all for Steams bottom price

      Steam's bottom price = meaning $.49?

    2. I just don't understand why a finished episodically released game is still offered episodic.
    1. A charming little romp through a realm of lateral thinking.

      lateral thinking

    2. Good fun if you think along this sort of wavelength!

      .

    3. Admittedly, some of the puzzles can be a little bit obtuse, particularly without any sort of hint-system to ensure you're thinking along the right lines, but still perfectly 100%able even without that.
    1. Anytime before your items ship, you may cancel your order for a full refund, no questions asked. And when you do get your items, if you don't think what you ordered lives up to expectations, we'll also refund you 100% and even pay for return shipping.
    2. For those who are wondering about the name, Bear Raid is a real phrase used to describe when a stock price is intentionally lowered through short selling and rumors.
    3. Factory FunNER is the sequel and a very solid improvement to Factory Fun. It uses hexes instead of squares to allow more creative building, and some subtle improvements to scoring, length, and machine placement rules really improve things.
    4. #2 Non-real-time variant - What about groups who don't like that real-time part of the game? We really think that is the best way to play, but we realize it isn't a fun or even possible option for everyone. We're including an alternative rule that removes all the speed elements and is still fun (in a different way).
    1. Building a wonky factory is way more fun than it has any right to be - and being rewarded for leaving last turn's pieces where they are (or punished for moving them) means that you're always working on top of the mess you made last turn, though you're never completely stuck.
    1. https://boardgamegeek.com/boardgame/183284/factory-funner/versions

      And now there are two versions with the nickname "Second edition": 2018 https://boardgamegeek.com/boardgameversion/404596/second-edition 2021 https://boardgamegeek.com/boardgameversion/556765/second-edition

      and a 3rd edition published prior to the current/new 2nd edition: 2019 https://boardgamegeek.com/boardgameversion/486693/third-edition

      Confusing all around.

      But I think the bottom line is that the 2021 version is in fact the same game and the newest rules tweaks:

      1. Added a sixth player
      2. Official variant to play without the quick grab element.
    2. Around &Bigger the box is bigger: 75mm high instead of 45mm or so.That was the main reason for the name &Bigger. The first edition does fit in its box but very tight. Because the first factory used bigger cardboard than planned. They told me about this "upgrade" after they produced the game. The thicker tiles (about 2.5mm) did feel good for the game so the &Bigger edition has the same
    1. Only the Starter Kit is available in this reboot. The Starter Kit is FREE, in order to distribute it as widely as possible. This goal of this Kickstarter campaign is to introduce Clash of Deck to the whole word and to bring a community together around the game. If the Kickstarter campaign succeeds, we will then have the necessary dynamic to publish additional paid content on a regular basis, to enrich the game with: stand-alone expansions, additional modules, alternative game modes..
    1. Stretch goals are mainly game quality improvement we will be able to finance thanks to your help. No extension or extra-scenario still to be designed and playtested that could delay the delivery of the games. Just of few goals to make them event better component wise.
    1. I bought this game and hope it will look like Carcassonne.But, my first impression of this lead me to compare this with Go.At the present, I am teaching to anyone that this game is Go with modular board.Yep, Bought this new and Go was my first thought on this, also. Definitely much closer to Go than Carcassonne.
    2. I strongly prefer this over Carcassonne. It plays faster (I don't want a tile laying game to go for more than 30 mins or so) and I happen to like the limited options. Carcassonne just gets on my nerves because I just don't view selecting between so many placement options to be that interesting. Obviously, YMMV. Ditto the previous statement, it's different than Carcassonne. And that's why I like it.
    3. Because it's totally and completely different? The games have nothing in common except that they both use square cardboard tiles with terrain on them.I agree, but I would go further and claim that they don't even have square tiles in common!
    4. But, my first impression of this lead me to compare this with Go.At the present, I am teaching to anyone that this game is Go with modular board.
    5. Carcassonne just gets on my nerves because I just don't view selecting between so many placement options to be that interesting.

      Interesting that this has no meaningful choices for the exact opposite reason (too many options/decisions makes it boring/not meaningful) that Fjords had, which was that you are forced to go a certain direction (lack of options).

    6. Because it's totally and completely different? The games have nothing in common except that they both use square cardboard tiles with terrain on them.
    7. Strange that a game published in 2005 that is derivative of a classic would essentially get fired by its predecessor. I fail to see why I would ever play this instead of Carcassonne.
    8. Thanks for pointing out my poor wording in the review. You are of course, correct. I will edit the review accordingly.
    9. The reviewer made a mistake, either in actual play or just in writing the review.
    10. You can create a separate grassland area (mountain in between) but you can NOT create a separate landmass (water in between).
    11. The central decision of the game is when to play your houses. And you didn't even really talk about that.
    12. I enjoy it as a quiet type of game you can play even when you've had a long, tough day. And I don't mind pulling unusable tiles; at least you get to take another one instead of missing your turn. There's just something relaxing about it. After all, lots of people enjoy sitting for hours playing Patience and this is much more entertaining than that.
    13. Few real decisions to make....Not in my experience, either in tile placement or in disk placement. Of possible interest is the thread:Informal experiment: how easy to find "the optimal disk placement" in various positions?wherein we see that even in the second phase, which people often complain is "automatic" or "obvious", the decisions are not necessarily obvious.
    14. Good review even if it didn't win your heart.
    15. However, it can be extremely frustrating placing the tiles. Very commonly there will be no position to place a tile in and it will be put to one side. Perhaps someone new to tile-laying games wouldn't find this so odd, but to anyone with experience of Carcassonne it will seem very limiting. In Carcassonne you can pretty much always place a tile, with several choices of position available. Every player I've introduced this game to has looked at me as if to say, "We must be doing something wrong." But no, that game is designed that way. Sometimes it feels like the map builds itself - there is often only one viable placement, so it starts to feel like a jigsaw, searching for that available position. Surely placing a single tile shouldn't be this difficult!

      I don't think I'd find it frustrating. I think I would enjoy the puzzle part of it.

      But indirectly I see that difficulty in placing tiles impacting my enjoyment: because it means that there are no/few meaningful decisions to be had in terms of where to place your tile (because there's often only 1 place you can put it, and it may sometimes benefit your opponent more than yourself) or which tile to place (because you don't get any choice -- unless you can't play the first one, and then you can play a previously unplayable one or draw blind).

    16. I recently played a prototype of an upcoming game called Bronze. This takes the tile-laying/ territory claiming mechanic and builds on it by adding abilities to each of the tiles. they benefit you in some way if you claim them. The result is a very similar feel to Fjords (competing for a share of the map) but with greater depth.
    17. No, I'm afraid not. I wanted to like it, but it hasn't offered up anything to make me choose this over a wealth of other short two-player games. It should go without saying (but it's worth repeating in view of the responses such reviews tend to get on BGG) that a negative review is always subjective and personal to the reviewer.
    18. Requires you to play multiple rounds (i.e. short games) to balance the scores
    19. Luck over-rides strategy
    20. You can't avoid the comparisons to Carcassonne even though the scoring mechanic is very different. It just looks the same, and the tile placement phase feels close enough to be familiar. However, this familiarity starts to nag at you, only adding to the frustration when tile placement is clumsy and luck-driven unlike Carcassonne. The comparison is not favourable for Fjords.
    21. There is a tendency in short luck-heavy games to require you to play multiple rounds in one sitting, to balance the scores. This is one such game. This multiple-rounds "mechanic" feels like an artificial fix for the problem of luck. Saboteur 1 and 2 advise the same thing because the different roles in the game are not balanced. ("Oh, well. I had the bad luck to draw the Profiteer character this time. Maybe I'll I'll draw a more useful character in round 2.") This doesn't change the fact that you are really playing a series of short unbalanced games. Scores will probably even out... statistically speaking. The Lost Cities card game tries to deal with the luck-problem in the same way.

      possibly rename: games: luck: managing/mitigating the luck to games: luck: dealing with/mitigating the luck problem

    22. Incidentally, I like both these games more than Fjords because they offer up a wealth of decisions on each turn even if you have drawn an unlucky hand of cards.
    23. You can strategise to a degree by trying to block off a potential peninsula (cut off between two mountains for example). This can start a little race to claim this area. e.g. I cut off an area with one of my houses. My opponent places another house deeper into the peninsula claiming it, so I place yet another on the peninsula. This little war does not (and cannot) last long, because you only have four houses each.
    24. You can strategise to a degree by trying to block off a potential peninsula (cut off between two mountains for example). This can start a little race to claim this area. e.g. I cut off an area with one of my houses.
    25. Luck is a major factor. As discussed above, sometimes the map seems to build itself and you draw tiles which you HAVE to place even though they are aiding your opponent.
    26. Otherwise, it plays out fairly predictably and very quickly. This is a shame because this is the point that it starts to feel like a real contest.
    27. Every player I've introduced this game to has looked at me as if to say, "We must be doing something wrong." But no, that game is designed that way.
    28. This is extremely simple stuff. It is easy to learn and teach and could be played by families with no problem. However, it can be extremely frustrating placing the tiles.
    29. Sometimes it feels like the map builds itself - there is often only one viable placement, so it starts to feel like a jigsaw, searching for that available position. Surely placing a single tile shouldn't be this difficult!
    30. f you cannot place it, it is set aside for use later in the game if an opportunity arises. (Tiles are set aside a lot.)
    1. The developers allowed for players to play their own level of challenge whether it's using the active pause, fast forward or multi-level undo function.
    1. This game is severely underrated. I genuinely do not understand all of the negative backlash it gets. It's a solid scribblenauts game with a ton of replay value and a way to past the time with friends. It's not perfect, as the motion controls do drag it down slightly, and some of the minigames offered are less than great, however it does not deserve the overwhelming hate it gets. It's a solid title in the series.
    2. I truly TRULY do not get the hate of this game. I am in my 40's. Played with 2 boys, 10 and 12. And we all had an amazing time playing the board game version of this for an hour. When it was over, the boys said, LETS PLAY IT AGAIN! The game is deep. Also has original sandbox mode with new levels. When they were about to leave, I surprise them by giving them the game as a gift. They were SO excited (and, I will simply buy another one for myself) I am simply BAFFLED at the hate and negativity for this game. Sure, a couple of the mini-games are not top notch. But there are many great ones within. At $40, solid deal. At $20 sale in most places, you have got to be kidding me. Steal it at that price. If you like Scribblenauts or are new to the Scribblenauts world, just buy it.
    3. The game is lame and the main gimmick of writing stuff is being shat on with the horrendous gameplay. If you have a very unique formula, don't try to change it.
    4. Yes, it shares the name and the look of those previous games, but it lacks the all-important creative heart of its predecessors, and ends up being a by-the-numbers affair that goes through the motions in a shallow attempt to turn Scribblenauts' unique premise into a multiplayer party game.
    5. but it’s an extra feature that adds to a game that would still feel complete without it.
    1. the lack of touchscreen support is an odd omission considering both games previously appeared on 3DS and Wii U,

      .

    1. Windows Subsystem for Linux provides a Linux-compatible kernel interface developed by Microsoft and containing no Linux code
    2. Functional UNIX[edit] Broadly, any Unix-like system that behaves in a manner roughly consistent with the UNIX specification, including having a "program which manages your login and command line sessions";[14] more specifically, this can refer to systems such as Linux or Minix that behave similarly to a UNIX system but have no genetic or trademark connection to the AT&T code base.
    3. Some add a wildcard character to the name to make an abbreviation like "Un*x"[2] or "*nix", since Unix-like systems often have Unix-like names such as AIX, A/UX, HP-UX, IRIX, Linux, Minix, Ultrix, Xenix, and XNU. These patterns do not literally match many system names, but are still generally recognized to refer to any UNIX system, descendant, or work-alike, even those with completely dissimilar names such as Darwin/macOS, illumos/Solaris or FreeBSD.
    1. Genericization or "loss of secondary meaning"
    2. A generic trademark, also known as a genericized trademark or proprietary eponym, is a trademark or brand name that, because of its popularity or significance, has become the generic term for, or synonymous with, a general class of products or services, usually against the intentions of the trademark's owner.
    1. The command also can be run in silent mode (tty -s) where no output is produced, and the command exits with an appropriate exit status.
    1. For Mac OS X, the syntax seems to be:
    2. This question does not show any research effort; it is unclear or not useful Bookmark this question. Show activity on this post. I'm trying to filter the output of the mpv media player, removing a particular line, but when I do so I am unable to control mpv with the keyboard. Here is the command: mpv FILE | grep -v 'Error while decoding frame' When I run the command, everything displays correctly, but I am unable to use the LEFT and RIGHT keys to scan through the file, or do anything else with the keyboard. How do I filter the output of the program while retaining control of it?
    3. Quite a lot of programs actually detect if their output goes to a file (e.g. try man | grep -F a and you will not be able to scroll back and forth).
    1. If you belong to private Teams, Free or Basic, your Teams will be listed in the left navigation on all Stack Exchange sites. Currently, they appear only when you are visiting Stack Overflow. If you don’t belong to any teams, there will be a prompt to start a team, which can be minimized.
    2. No longer a free trial but free forever
    3. We also know people need a good sized group and time to see the impact and value of a platform like Stack Overflow for Teams. Our previous 30 day free trial of our Basic tier wasn’t long enough. Now, Stack Overflow for Teams has a free tier for up to 50 users, forever.
    4. With Stack Overflow for Teams being a flexible platform, we’ve seen customers use it for a wide variety of use cases: A platform to help onboard new employees A self-serve help center to reduce support tickets Collaboration and documentation to drive innersource initiatives Breaking down silos and driving org wide transformation like cloud migration efforts A direct customer support platform Enable people who are working towards a common goal, whether a startup or a side project, to develop a collective knowledge base
    1. Gilles has written an excelent answer here (see unix.stackexchange.com/a/105655/49721) explaining why "A space-separated list of file names doesn't really work: what if one of the file names contained spaces?"
    2. What produces that text, and what do you want to use it for?
    3. If it's a list of actual pathnames, just replacing spaces by newlines may obviously mangle pathnames that contain embedded spaces, such as /User/myself/VirtualBox VMs/.
    4. 2 out of 3 people in my household do not find it easy to understand. Maybe that is is not representative, but keep in mind that something you yourself understand (or in this case think you understand) always seems easy.
    5. I think you can do more with sed as it is an editor rather than simply translate characters.
    6. Notice the use of Enter key after backslash in the sed command.
    7. sed can do so much more, but is totally overkill for this. tr is the right tool for THIS job, but knowledge of sed and regexes will certainly come in handy later!
    8. For path names with newlines it is better to quote each pathname.
    9. But we can use a two characters delimiter: / (space slash) That pair of characters could only exist at the beginning of a new (absolute) path:
    10. The question on the title: replace space with new line The simple, quick, brute force solution is to do exactly that, replace all spaces with new lines:
    11. But in your question you are listing a list of paths:
    12. Using the solution above will not work for filenames with spaces (or newlines).
    13. Although echo "$@" prints the arguments with spaces in between, that's due to echo: it prints its arguments with spaces as separators.

      due to echo adding the spaces, not due to the spaces already being present

      Tag: not so much:

      whose responsibility is it? but more: what handles this / where does it come from? (how exactly should I word it?)

    14. If a program receives file names as arguments, don't join them with spaces. Use "$@" to access them one by one.
    15. A space-separated list of file names doesn't really work: what if one of the file names contained spaces?
    16. However you're probably asking the wrong question. (Not necessarily, for example this might come up in a makefile.)
    17. substitute /one space or more/ for /newline/ globally
    18. I'm posting this question to help other users, it was not easy to find a useful answer on UNIX SE until I started to type this question.
    1. Unfortunately this option doesn't exist in all versions of rynsc. In particular, 3.0.6, which ships with CentOS 6.
    2. This seems definitely better than checking for a specific return code and overriding it to 0.
    3. Except in rare cases, files vanishing during a live backup are perfectly normal (a lot of applications create short-lived temporary files). This is especially true in the case of a mail server, where files containing e-mail messages are constantly moved from one directory to another, so IMHO this answer is more adequate than the one accepted by OP.

      .

    4. Unfortunately, unlike what is described in SWdream solution, --ignore-missing-args has no impact on vanished files. It will simply ignore source arguments that doesn't exist.
    1. The script support/rsync-no-vanished that will be in the next release.
    2. The script support/rsync-no-vanished that will be in the next release.

      I don't see it anywhere.

      locate rsync-no-vanished
      
      $ rsync --version
      rsync  version 3.1.3  protocol version 31
      
    3. I should note that the issue with deletions being skipped has been fixed (the file-has-vanished errors were changed into warnings).
    4. Interesting to see how a simple request is actually a rather intricate little problem in the bigger scheme of things.

      an intricate piece of a larger system / problem / schema

    1. COPYRIGHT Rsync was originally written by Andrew Tridgell and is currently maintained by Wayne Davison. It has been improved by many developers from around the world. Rsync may be used, modified and redistributed only under the terms of the GNU General Public License, found in the file COPYING in this distribution, or at the Free Software Foundation.

      Only answered:

      • who maintains
      • what the license is
    2. Rsync was originally written by Andrew Tridgell and is currently maintained by Wayne Davison.
    1. I`m getting "rsync warning: some files vanished before they could be transferred (code 24) at main.c(1518) [generator=3.0.9]" on one of my systems i`m backing up with rsync , but rsync doesn`t show WHICH files.
    2. i found that for the osx host "gonzo" , the vanished files (not the warning message itself) appear in stdout - for linux hosts they _both_ appear in stderr , but nothing in stdout (rsync.err.#num is stderr, rsync.log is stdout)
    1. It seems inelegant to me to split this into two different modules, one to include, the other to extend.

      the key thing (one of them) to understand here is that: class methods are singleton methods

    2. Another possible solution would be to use a class Common instead of a module. But this is just a workaround.
    3. include adds instance methods, extend adds class methods. This is how it works. I don't see inconsistency, only unmet expectations :)
    4. Trust this answer. This is a very common idiom in Ruby, solving precisely the use case you ask about and for precisely the reasons you experienced. It may look "inelegant", but it's your best bet.
    1. Apparently when you create a subclass, that subclass's singleton class has # its superclass's singleton class as an ancestor.

      This is a good thing. It allows class methods to be inherited by subclasses.

    2. at least in recent versions of Ruby, calling ancestors on the singleton class does show the other singleton classes.
    3. I played around with something to give me the list of receivers for any Ruby object in my introspection gem. If you load the "introspection/receivers" file you get a method #receivers on any object which gives you the whole receiver chain.
    1. “Who cares? Let’s just go with the style-guide” — to which my response is that caring about the details is in the heart of much of our doings. Yes, this is not a major issue; def self.method is not even a code smell. Actually, that whole debate is on the verge of being incidental. Yet the learning process and the gained knowledge involved in understanding each choice is alone worth the discussion. Furthermore, I believe that the class << self notation echoes a better, more stable understanding of Ruby and Object Orientation in Ruby. Lastly, remember that style-guides may change or be altered (carefully, though!).
    2. “It is less clear that way” — that is just arbitrary, even uninformed. There is nothing clearer about def self.method. As demonstrated earlier, once you grasp the true meaning of it, def self.method is actually more vague as it mixes scopes
    3. I wish to define methods within the class they belong to. Using class << self demonstrates that approach clearly — we are defining methods within the actual singleton class scope.
    4. When we usedef self.method, though, we are defining a method across scopes: we are present in the regular class scope, but we use Ruby’s ability to define methods upon specific instances from anywhere; self within a class definition is the Class instance we are working on (i.e. the class itself). Therefore, usingdef self.method is a leap to another scope, and this feels wrong to me.
    5. Class Methods Are Singleton MethodsSince in Ruby classes are objects as well, class methods are merely methods defined on a specific instance of Class.
    6. Similarly to fashion, code style reflects our credo as developers, our values and philosophy.
    7. Yet, it certainly is important to make the proper choices when picking up style. Similarly to fashion, code style reflects our credo as developers, our values and philosophy. In order to make an informed decision, it’s mandatory to understand the issue at stake well. We all have defined class methods many times, but do we really know how do they work?
    1. There are times when a piece CAN be played, but the options available lead to many strategic decisions:1) If I play it HERE, will it benefit me more than you?2) Does the placement force my hand to place another farm, and if so will I have a farm defecit compared to yours?3) Does this placement create a situation where I might be giving up first-play advantage (opening up a piece that had previously not been playable)?
    2. Actually, I think your wife's point is quite astute. Once you become very familiar with this game, there is almost too much deep planning in the moves.
    3. My wife's first description of playing Fjords was that it felt a bit like playing Othello, in that you had to think too far ahead. I don't see it that way. I think that the luck of the draw & the fact that a tile must be played if it can, means that you can't always plan too far ahead. Often you have to try to work out how to make use of what you've got.
    1. What's the point of playing a game featuring fjords without also including vikings to pillage the other player's lands...I've actually developed two additional tiles for Fjords: The Dragon and The Marauding Hoard. Both do exactly that.(I've play tested them with a friend well over 40 times and we both agree that with an expanded set of Fjords tiles, these two greatly improve the game for us. I'll write the tiles up and post them to BGG... eventually)
    2. you're quite the lucky man. i finally got my wife to agree to play fjords with me last weekend and, after beating me pretty soundly in two straight games, she announced she didn't like the game. turns out she didn't like the puzzle/board-building aspect of the game, the lack of aggressive play ("it would have been better if i could have fire-bombed some of your land") nor all of the 'action' taking place in the last minute or two of the game.drats.
    3. It's the first time that my wife and I have played Fjords together. She's not a gamer but we've recently been playing a few more games and she's been willing to try a few Eurogames (e.g. Carcassonne) and some of the kosmos 2-player games (Jambo, Odin's Ravens, Balloon Cup, Lost Cities) that I've borrowed from friends which is great. I manage to get a hold of a copy of Fjords and we have a go.I tell her that it involves spatial awareness and planning ahead. I explain the rules to her (having only played it once or twice myself and won each time), and she's doing her best not to roll her eyes; there's a definite lack of enthusiasm there.
    4. I tell her that it involves spatial awareness and planning ahead.
    1. IMPORTANT NOTE: Rude, dismissive or diminishing comments are NOT ALLOWED and will be removed. If you cannot treat everyone with kindness and respect, this is not the place for you. Please see http://conduct.rahdo.com​ for more. Thank you!