Originally a Roman Catholic, but later a Lutheran Church in Brașov's historical center. The modern legend goes that it's called The Black Church because it was sooted by fire in late 17th century.
At one time it was common in Romanian Saxony to decorate churches with Ottoman carpets, and The Black Church has the largest collection of such carpets.
You can see them hanging from above:
Or on the sides
Not only carpets are elaborate and/or colorful. Tombstones are, too. These are just some of the tombstones, because original graves were removed from the church after the plague.
The rest of the church is a regular Lutheran church inside an impressive building.
Libearty Bear Sanctuary by Millioane de Prieteni (Millions of Friends) is cool place and worth a visit just for the history of the place and of the bears.
The whole thing started as a dog shelter in 1999, but since 2005 they've been taking care of bears, too. Look at them go. Or, well, look at them be leisurely:
They are taking care of 126 bears. And they are still getting animals rescued from private homes and illegal zoos.
These bears are in a limbo state:
they are still wild animals (that's why all the photos are taken from a safe distance from behind a fence)
if you release them into the wild, they will come back to people because they've grown dependent on them for food.
In extreme cases they can't even take care of themselves because they have been declawed, and their teeth have been removed
So the sanctuary adopts these bears, sterilises them (so that no cubs are born in captivity to perpetuate the cycle), and gives them a huge chunk of a forest to roam, with lakes, pools, trees, places to build dens and so on. And also treats them, takes care of them, monitors their health, and provides them with additional food (because there 126 bears after all).
Each bear comes with its own story, and many of them make you lose all faith in humanity. But the sanctuary restores that fate, because the people who work there are awesome.
The railway station in Chișinău is, or could be, beautiful. It suffers from neglect and Moldova's inexplicable love affair with dull gray paint.
The train that runs between Chișinău and Bucharest is charitably called an express train. It's also charitably called modern. It consists of Soviet-era carriages mildly refurbished to be able to connect to Romania's actual modern trains:
The corridor and the rest of the carriages are unchanged from the Soviet times. It should be noted that everything is very clean even if it doesn't often look like this in the pictures.
A view into the "restaurant". Snacks, and alcohol:
The toilet is still a hopper toilet. That is, you step on a pedal, the bottom opens up and everything is dumped outside. They keep it locked during stops, for obvious reasons :)
It's an unwritten law that you must eat when you travel. This time with some traditional plăcinte.
The track gauge in the former Soviet Union is wider than the track gauge in Europe. On the border with Romania the carriages are lifted up and fitted with new wheels (called bogies).
As you can probably guess, the entire system was built in Soviet times and never updated or repaired since.
Without going into too much detail it's recommended to start with a recurve because it will help you achieve results with your techinque faster.
You can always switch to barebow, or traditional bow, or compound, or longbow if you wish.
Starting out with your bow
It's possible that your new bow will be heavier than you expect. So this is what you should do when coming to the club:
Get both your bow and the club bow, and set them near you
Start shooting with your bow.
Once you feel that you're getting tired, continue with the club bow (a much lighter bow)
Continue that every training until you can shoot all arrows just with your bow.
Example:
Your goal is to shoot 100 arrows
You shoot 30 arrows with your bow, and you start feeling tired
Shoot the remaining 70 arrows with the club bow
The next time you'll probably shoot 40 arrows with your bow, and the time after that 70 arrows etc.
ILF
Make sure that the components you buy (riser, limbs) are ILF (International limb fitting) standard. It's one of the few standards that exist in archery, and you want things to fit together.
Components you need
Riser (sv: stock), ILF
Get the one that you like (color, look etc.)
Even the cheapest one at a shop like Bågar & Pilar will be better than you need
It will last you forever
Even though you might end up changing/upgrading it in a few years
Example: Risers by Win&Win have a budget series that can be had for under 2300 SEK.
Limbs (sv: lemmar), ILF
Get the cheapest shittiest limbs you can find
If you practice, you'll need heavier limbs pretty soon (often withing half a year)
After that you keep them at home for when something happens and you don't train for a long time. Then you start with the lighter limbs again
String
String thickness depends on the arrow nocks. Go for the small nocks.
Don't go for the fastes of the fastest strings
Go for HOYT Formula 8190 or similar
Stringer: sv: påsträngare [optional]
This is a tool to string your bow in the absence of other helper tools. There are many different ones, but you may want a lighter smaller one that you can carry with you everywhere. Like this:
Arrow rest
The arrow rest should be as smal and light as possible. You want a magnetic arrow rest like in the picture. These ones are easy to attach, the magnet makes sure the arrow rest rests the position when the arrow flies away, it doesn't wear out (like soft/rubber rests do).
Don't buy the ceapest or the most expensive one, buy a good one. A good example is Shibuya.
Plunger
The plunger nudges your arrow to make sure it straightens its flight path quicker once you let it loose. A plunger will need tuning according to how you shoot.
Same as arrow rest, don't buy the ceapest or the most expensive one, buy a good one.
Sight
Spend all your money on a sight
If you buy a good one, you will never need another one, ever. The last for decades.
Make sure you're buying a sight suitable for your shooting hand (that is, right-handed, or left-handed)
Stabilizer (sv: stabbar/stabilisatorer)
As a beginner, you want the middle one and the V-bar (to attach side stabilizers later). This is to make sure that the side stabilisers don't help you too much before you develop a proper technique.
Don't go for the cheapest or for the most expensive ones, go for the good ones, they will also last you for a long time. If you find a set of all three stabilisers that goes for a good price, get that, you'll probably want those side stabilisers later.
Quiver (sv: koger) [recommended]
This is, of course personal preference, but there are a few things to consider:
The arrow holder should be split into sections:
they don't rub against each other and don't damage each other as much when they are split into smaller bunches
if an arrow breaks or becomes damaged during shooting, you just place it into a different section, and continue shooting
if you're going for competitions, this helps you keep track of how many arrows you shoot (just split by three per section)
Several pockets is nice to store smaller things like repair kits, stringers and like.
If you go for a quiver with pockets, make sure they can be closed/zipped-up: easier to store stuff, protection from rain when shooting outside etc.
Bow stand [optional, recommended]
Magnetic bow stand will simply protect your bow, and makes it convenient to put it down to rest etc.
Bow square (sv: trängvinkeln) [optional]
To set nocking points on arrows
Finger sling (sv. fingerslinga)
Most archers don't use the sling pictured below, and insted use the finger sling pictured above
While you can buy finger slings, you can just make them out of shoe laces (as pictured above). You want a sports shoe lace that is flat (not round).
You will need at least two of these because they can be easily lost. And you shouldn't just use one of them, but use change them from time to time so that they are the same length, state etc., and don't affect you.
Arrows
Do not buy until you've used your own bow for a while. Then you will measure your finger pull weight, and will figure out which arrows you need, and then buy them.
Arrows also consist of four parts that you may need to buy separately:
shaft
nock (chose small ones, see also string section above)
tip
vanes
Summary of equipment
Required
Equipment
How much money to spend
Riser ILF Right/left-handed
When buying new from a specialized store, even the cheapest one is more than enough
Limbs ILF
The cheapest and the shittiest
String
Whichever, suitable for small arrow nocks, don't go for the fastest of the fast
Arrow rest Right/left-handed
Don't buy the cheapest or the most expensive
Plunger
Don't buy the cheapest or the most expensive
Sight Right/left-handed
Spend all your money on it
Stabilisers
Look for a good price
Special mention:
Equipment
How much money to spend
Arrows
Don't buy until you've used your bow for a while
Optional / recommended / you'll probably need it sooner or later
Equipment
Notes
Quiver Right/left-handed
Compartments for arrows. Pockets. Pockets can be closed/zipped-up
Bow stand
Light magnetic
Bow square
Stringer
Small a light to carry around
Bag
Lots of pockets to carry small stuff, a tube to carry arrows and stabilisers
Allen key set
Both inches and millimiters (because parts often come in either)
Personal notes
These are numbers for my own first bow:
Part
Measurements
Riser
25" (could be called medium by some companies)
Limbs
70" 26#
The measurement above is for a draw length of slightly over 29" (29.2" or 29.3")
There's no end of John Gruber advocating for privacy and fighting Meta/Facebook. These are just some of the quotes, and I really like the last one: "The entitlement of these fuckers is just off the charts."
And Apple’s new tracking-related features are not “anti-tracking”. They’re simply about raising user awareness of tracking and giving users control over it.
Let’s say a cottage industry arose where commercial companies were, unbeknownst to most people, plugging their fleets of electric vehicles into the outdoor power outlets on people’s homes overnight. “No one told us not to plug our electric delivery vans into these homes’ freely available power outlets.” And then, after this practice comes to light, the electric company adds a feature where every time a new vehicle is plugged into your outdoor power outlet, you, the homeowner, need to authorize that vehicle as being allowed to charge using the electricity you pay for. If you don’t authorize it, they don’t get the juice.
27 May 2021about Facebook's reaction to AppStore privacy labels
Let’s get them some lollipops, make the boo-boo feel better.
(Alternative quip: “By sharply reducing burglaries, police are limiting the ability of pawn shops to create value from stolen goods.”)
Apple’s “Privacy Nutrition Labels” launched this week on the App Store... It’s worth going right to the source to know what Apple is requiring here, because the companies who are coming out of this looking bad are attempting to misdirect attention.
To see them in action, just go to any app’s listing and scroll down a bit, and you can’t miss them. View the details for apps that respect your privacy and you’ll see a concise listing. View the details for apps that don’t — like, say, Instagram or Facebook — and you’ll get screen after screen showing just how much information about you they collect. Instagram and Facebook’s app privacy listings look like those crazy-long receipts from CVS.
There’s also an implication here that Apple didn’t give the companies who’d be affected by ATT sufficient notice before instituting the changes. And we all know who the primary “company” is: Facebook. I’d say Apple bent over backwards to give Facebook time, and how Facebook reacted is instructional.
This new ad from Apple touting iPhone privacy protection is good, and genuinely funny. But what makes it funny — the premise is a series of people loudly sharing in the real world the sort of information that gets unknowingly tracked online — is actually the perfect analogy to help explain how the tracking industry — what ought to be considered the privacy theft industry — has grown into existence.
Consider the new ad-tracking privacy protection feature in iOS 14. The tracking industry, led by Facebook, is up in arms about it
The entitlement of these fuckers is just off the charts. They have zero right, none, to the tracking they’ve been getting away with. We, as a society, have implicitly accepted it because we never really noticed it. You, the user, have no way of seeing it happen. Our brains are naturally attuned to detect and viscerally reject, with outrage and alarm, real-world intrusions into our privacy. Real-world marketers could never get away with tracking us like online marketers do.
And more (such as upcoming Digital Services acts requiring to have non-algorithmic feeds, Norway banning facebook's behavioural advertising etc.)
Gruber's reaction to this has been stellar. It started even prior to this, when many Mastodon admins have decided to pre-emptively block Threads if it ever implements ActivityPub protocol. But he definitely went ballistic when Threads launched. Both over at Daring Fireball and in his personal accounts:
Threads is the most fun, most interesting new product of the year, and no one in the E.U. can use it, or will be able to use it anytime soon, because their own elected officials passed a law that effectively bans it.
There are countless more where he defends Threads from any possible angle.
John Gruber and the tragedy of preaching to the choir
Let's skip the obvious conspiracy theory that John Gruber is paid by Meta to promote and defend Threads. I think the reason is much simpler and sadder.
Over the years Daring Fireball has built a loyal following. It has always been a good source of Apple gossip, decent summaries of tech-related discussions etc. And a lot of that audience has been sycophantic.
In the mad rush to exit Twitter several things happened:
Twitter audience has declined
BlueSky audience never really materialised (it's still tiny, invite-only, and with multiple scalability issues)
And Mastodon...
Mastodon isn't sycophantic in the least. Every time Gruber praises Threads and bashes privacy regulations Mastodon audience is not amused, and it's a polite way to phrase it.
I think Gruber now yearns for the days when he could mostly preach to the choir. Unfortunately for him, the alternatives to Twitter (Mastodon and BlueSky) never gave him this opportunity. An app from fuckers whose entitlement is just off the charts might just be it.
You can safely say that was the last time you saw or heard Macintosh in the entire 1 hour and 50 minute-long presentation. In total Mac was mentioned at most a few times (even if we count the ambiguous “across all devices”) for a total of maybe 10 seconds.
The first time Mac was mentioned even in passing was 40 minutes in during Apple Arcade presentation. Apple Arcade was presented as “World’s first game subscription survice for mobile, desktop, and living room”. It was followed by a short film about games and game developers. There was no desktop game mentioned or shown in the entire video.
Thank god, we’ll be able to play games on Mac as well. “You can continue when you left off even if you switch devices.” So? Only iPhone/iPad games? No word or screenshot of the Mac App Store, only the iOS App Store.
Mac was on screen for a total of ~1s during Apple Arcade presentation.
The longest the Mac stayed on screen was to serve as a nice static background for Tim Cook as he was talking about something else.
Next was Apple TV. They kept repeating “on all your screens, on all your screens”. I’m guessing these are “all your screens”?
The presentation continued with “You saw the new Apple TV app on Apple TV 4k, it looks stunning on iPad, and of course is available on iPhone.” So, no hope?
You know, at the very least they give honorary Oscars or something to actors who are no longer starring, but need to be mentioned.
Oh. Look. They actually decided to bring the Apple TV app to the Mac. For the first time, this fall. Also, if I’m not mistaken, it’s the first time they mentioned Mac by name. At 1 hour mark.
And that was it. The first time was also the last time.
The rest was about Netflix wannabe sorry, Apple TV+.
I will borrow the excellent straightforward definition from Exploring JS:
The following is a tagged template literal (short: tagged template):
tagFunction`Hello ${firstName} ${lastName}!`
Putting a template literal after an expression triggers a function call, similar to how a parameter list (comma-separated values in parentheses) triggers a function call. The previous code is equivalent to the following function call (in reality, first parameter is more than just an Array, but that is explained later).
Thus, the name before the content in backticks is the name of a function to call, the tag function. The tag function receives two different kinds of data:
Template strings such as 'Hello '.
Substitutions such as firstName (delimited by ${}). A substitution can be any expression.
…
Additionally, tag functions get two versions of each template string:
A “raw” version in which backslashes are not interpreted (\n becomes \\n, a string of length 2)
A “cooked” version in which backslashes are special (\n becomes a string with just a newline in it).
This is literally all there is to tagged template literals. It’s a function call with an array of strings (each string is in two versions), and an array of substitutions between the elements of said strings.
What are tagged template literals presented as?
I believe this is the future of JSX, and it’s only just getting started. There are some very interesting optimizations Tagged Templates make available, like identifying and hoisting static parts of a view (essentially memoizing them).
Writing HTML in HTML files, writing code between <script> tags, writing Javascript in .js files is the same as writing code in string blobs and parsing them at runtime.
These are tagged templates, not strings. They work as code at runtime, and it already has support to optimize it, compile it, etc. This is JS all the way down.
There are many more, but they all basically come down to the same thing: //there’s no difference between a JS-file loaded into and run by the JS VM, and run-time function calls with arrays of opaque strings//. And this is the future, and it’s amazing.
So why do I think these are bad?
Once again, I’ll steal a quote:
…we’ve learned not to write code in strings. You’d think this would be a fundamental law of software engineering
…
Writing code, not strings, means you can do everything to it that you can do to code. You can type check code. You can lint it. You can optimize it, compile it, validate it, syntax highlight it, format it with tools like Prettier, tree shake it…
In a language that’s already a laughing stock for its insane dynamic type system, we said: “It’s all right, we’ll have all our code in strings now, thank you very much, and we’ll make sure we parse it at runtime because what can possibly go wrong”.
The only reason projects like lit-html, HTM and some others can boast about their “accomplishments” building fast, effecient libraries is because string handling has been insanely optimised by the modern Javascript VMs. And that .innerHTML is no longer the slowest operation on the DOM. Let’s look at some examples, shall we?
JSX-like syntax in plain Javascript is somewhat of a lie. That’s HTML(-like) syntax inside plain strings that are processed by plain Javascript at run time. So I guess it still makes this plain Javascript I guess 🤷♂️?
When I first heard of HTM, it looked something like this. Of course, it was doing exactly the same thing as lit-html: regular expressions, string blobs, and innerHtml before it got React/Preact integrations.
Thankfully, the current version is smarter and smaller. It creates what is essentially an AST of the parsed structure that’s then passed on to the actual rendering function. However it’s still the same thing: parsing a bunch of opaque strings at run time. Opaque because neither the JS VM nor the browser know what’s in those strings.
And I mean… Why parse strings and build (potentially huge) ASTs at runtime when you can do actual function calls which, you know, can be optimised by the VM etc.? But I digress.
It maintains its own list of tags (new tags and web compoinents are out of question?), it will generate and inject styles on render by going to great lengths to figure out what the hell we got passed, there are some regexps here and there.
Well, you got the gist. String blobs are being painstakingly parsed, and then reassembled.
They all do the same thing: the parse the strings at runtime. In many cases they concatenate some strings or produce some objects. They return some result or just directly dump it into the DOM.
Why is this bad again?
Because this isn’t code. This is literally taking a bunch of opaque string blobs, parsing them at runtime, and producing some result. All of programming has been busy moving away from coding in strings and parsing stuff at runtime. For the past few years Javascript has been happily re-introducing the worst programming practices. And devs get away with it, too, just because modern Javascript VMs and browser DOM are optimised way more than they have any right to.
Are they DSLs or embedded DSLs? They are probably weak embedded DSLs, but I’ll let people more knowledgeable than I decide.
They also lead to some horrible developer experiences. You cannot place a breakpoint on a string. You can place a breakpoint on the interpolated expressions inside one, or on the actual tagged literal function call, but good luck figuring out if you made a type somewhere.
Since these are just arbitrary strings, no common tools will be able to lint them, analyse them, optimise them unless you write a very specific tool for this particular very specific string structure. And yes, that includes JS VMs.
As you’ve seen above, people are in all seriousness talking about re-implementing optimisations that compilers already do for actual code: memoisation, inlining, optimising common paths, code elimination. Pure madness.
You wanted macros? Here, have run-time string concatenation and regexp parsing, and stringly-typed everything.