I’ve been using Hetzner for a year, I’m quite happy.
Price for large chunks of storage is a bit expensive.
The only issue I’ve faced was a snail mail letter threatening collection if I forgot to pay an open invoice. I had no idea they couldn’t auto process paypal.
I’m based in Germany so my experience could be different from others outside.
People often advertise infinity scroll as a feature designed to retain user attention and increase engagement but ignore that this UX implementation is a way to handle cursors transparently.
When you need high availability guarantees usually search and aggregations query gets distributed across different specialized systems and results are federated to be presented. It’s impossible to present consistency grantees that regular offset pagination can offer, like in a real database.
I think that https://cloud.google.com/blog/products/devops-sre/join-sre-classroom-nalsd-workshops could be of some use to you, it is not focused around a single programming language or approach (and it does focus on the design of the distributed system) but IMHO does a good job in evaluating different options while using a practical~ish system. I had the chance of going over the workshop (or a very similar one) in the Velocity Conference last year and I really enjoyed it.
They’ve made available all the materials, slides, guides, notes, etc. (https://landing.google.com/sre/resources/practicesandprocesses/sre-classroom/) which should also help you to reuse whatever (if any) part you find useful.
I attended one of these workshops last year during velocity and it’s a fun and refreshing experience. If you have safaribooks the presentation is here https://learning.oreilly.com/videos/oreilly-velocity-conference/9781492050742/9781492050742-video328447
I was going to recommend the course @nikivi already did, but since you mentioned about being more practicably than theoretical I think my answer would be helpful.
In regards of distributed systems to give people a bit of vocabulary, a good idea is to start with the following books
Martin Kleppmann Designing Data-Intensive Applications.
Burns, B. (2015). Designing Distributed Systems. O’Reilly.
You can find both on safari online, before jumping into the book itself, take a look at the outline to understand how they structure the path ahead.
Also, Sam Newman’s latest book Monolith to Microservices can be a good source of ideas as well, as you’d find a good overlap between DS and the micro-services hype.
I’ve been thinking myself how to rump up our internal teams at work, it could be a good opportunity to collaborate.
I am not sure where the first one is, but the latter book’s actual link is here, https://www.oreilly.com/library/view/designing-distributed-systems/9781491983638/
My bad, it auto completed with my references and it was wrong.
I Loved all of those. Burns distributed systems is full of fantastic tricks with containers. And from the perspective of an architect that deals with real world enterprises, Newman’s is absolutely invaluable. I think this last one OP will benefit you greatly. It neatly delineates migration strategies and political/organizational complexities, that as developers we too often miss.
You've read all of your free stories this month. Become a member to keep reading.
Doesn’t really paint sway in a bad picture, but wow does it sound complicated to replicate your X working environment with wayland… Still…
I think part of it is that many of the Wayland tools aren’t yet packaged for Ubuntu (or are outdated), so you need to compile them from source. Also, you probably took some time to setup your i3 environment as well, similarly setting up Sway will take some time too (you can just copy-paste your i3 config, but you’ll need to do the work for the rest of your tools).
But that’s exactly what I meant.
I actually don’t use a lot of i3-specific tooling. One i3-addon and dmenu and the bar. So everything that was described is “Linux GUI stuff” for me, like xdotool (I hardly use it) - so X applications and tools. I suppose replacing dmenu would be trivial for me.
People get used to doing things if they use Linux for years, and all the work there seemed pretty wayland-specific to me. Of course it was adjusting sway to be like i3, but people who want to do that sort of customization would have done that on another WM on X as well…
If you don’t use many X11-specific tools, then I don’t really understand how switching to Sway would be complicated. You don’t even need to replace dmenu if you don’t want to. Just copy over the config and you’re good to go?
Sway is strictly an i3(-gaps) port of i3 to Wayland, so you don’t need to adjust Sway to behave like i3.
Just because I don’t use them doesn’t mean I see why some problems in the article are solved just like I would solve them. Which means I seem to have at least the same basic understanding.
And I find the procedure to mimic things quite involved. I didn’t say wayland was bad, just that this seems like a lot of work to replace tools that have always worked.
While it seems to be the case that Ubuntu doesn’t have these tools packaged (yet), there are quite a few already packaged for Arch Linux, and I know that Fedora also has a pretty thorough selection. I had very little trouble switching to Sway and Wayland (earlier this year I think), which was a pleasant surprise. Most of my customisations were more quality of life than strictly necessary. It’s quite usable before you even start customising it.
As long as I can run a browser and a terminal on X I won’t switch.
People will argue that you aren’t guaranteed to be able to either of those things… Without tearing, on xorg. Depends à bit on your gpu.
If you could transverse time backwards, I’d say the pattern would be visible as
“Do you feel Ruby/Python developers are pushing …”
“Do you feel Java developers are pushing …”
“Do you feel PHP developers are pushing …”
“Do you feel VB developers are pushing …”
“Do you feel Delphi developers are pushing …”
There’s not much we can do here other than try to bring different ideas packed in a form different than the language flamewar.
The thing I say to my younglings is that tomorrow they will hate JS, so learn what’s behind it.
It still blows my mind that Microsoft lost their antitrust case over bundling IE with Windows, given how far monopolies have pushed their advantages in the decades since. Antitrust enforcement has all but disappeared in the US.
I’m unsure why people interpret the Microsoft antitrust case as producing an outcome of “it is illegal in the United States to bundle a web browser with an operating system”.
That was not the outcome the case produced, and there’s basically no valid analogy to be drawn between that case and the present-day Apple hardware/software ecosystem (the Microsoft case was about abuse of an existing monopoly; Apple does not have a monopoly, or anything close to a monopoly, in any category that would be relevant for drawing such an analogy). The only thing they have in common is the anger of a certain subset of the tech community at the companies involved.
Tech learned a thing or two about lobby since then.
I’ve been iterating over the same concept but with slightly modifications over the years
Basically I have a command called logbook to log entries. It opens a new “today” vim buffer, appends the current timestamp and once saved, it pushes the changes to a github wiki, so I have an online version if I’m on the run.
If I call logbook topic it creates a specific page or appends to the existing log, easy to organize related stuff
The basic script is here
I use TreeSheets.
The UI/UX is worthy of exploration; unlike anything I’ve seen.
kind of similar in some ways to void (void is TUI though). I actually started void to be a tui spreadsheet, but over time found that a strict tree worked better for my own workflows. but maybe over time I’ll revisit the nested spreadsheet idea.
This looks awesome. I don’t personally see this as a replacement for Joplin which I use and adore for note taking, but I could totally see it as a fabulous tool for ideation and outlining.
Definitely giving this a look, thanks for the pointer!
How did you manage to get a handle on it? It seems so damned alien and all the tutorials I’ve managed to find when I go looking every 6 months or so are always really shallow, like one of those “button and counter” Medium posts about React.
This is completely new to me. Thanks for sharing!
Interesting, this reminds me a bit of MaxThink for DOS back in the 90s
Welp, this looks amazing. Thank you!
This does look intriguing, but I can’t help but be disinterested in it because it doesn’t look like you can share and collaborate over the Internet. Can you? Or are is there an online equivalent or competitor?
No, this is strictly desktop software. Miro is the closest I could find to an online version.
I will be there if anyone wants to hang out :)
Now I’m actually curious, does anyone learn programming from a book?
I figured books (and tutorials) are a good way to just get started if you can’t get there on your own, and I guess you can learn new tricks & deepen your knowledge with the help of a book after you’ve got the core stuff figured out. Between the getting started stage, and the deep end, you just have to learn programming by actually programming eh?
I’m not sure people in universities learn programming from books either. Well, my lil’ sister just started studying CS. There are books, but they’re rather supplemental. The core material is lectures and exercise.
I learned from books (and magazines) in addition to writing programs. But this was back in the mid-80s when I was in high school. The only source I had were books (and magazines ). No one else I knew knew anything about computers (with the exception of one friend, and he had a different computer than I did).
 Byte magazine was one of my favorites . But even the computer I had, which was not popular by any means, had at least two different magazines devoted to it, both of which covered everything from hardware to software.
 I recall it having a series of articles about compiler construction and parsing techniques. Mid-80s Byte magazines made incredible readings. By the late 80s it had morphed into a general PC rag, but I was in college at that point.
“Getting started” isn’t learning? I learned C in the early 80s with a copy of K&R in one hand, doing the exercises. Or at least it sure felt like learning. Now, I didn’t get proficient/skilled without a ton of practice and subsequent help from more experienced mentors, but that strikes me as something different.
Books are an invaluable tool for learning, but they can’t do everything. Some people are just plain bad at teaching or writing or they have other incentives for writing aside from education.
The principal point I think is that someone (maybe several people) with wider and deeper knowledge on a subject present their knowledge for you to learn from.
My first approach when I want to learn something is to read about the subject - and we also have other media too. I don’t have to stumble along, making mistakes, going down the wrong path, wasting time on irrelevant material and so on. Others have already done that before. Why wouldn’t you learn from them?
Later, once I’ve gained some knowledge, I can explore and expand, go deeper or focus on topics that are interesting or relevant. Everyone is different though and some people do benefit and thrive from a hands-on, practical approach first.
Personally, I want pointers and relevant background and guidelines from others who have studied the subject already. I don’t want to have to learn by doing all my own research up front over and over and over.
You absolutely need to reinforce that knowledge with action, experimentation, application though. I think the best approach for me is to have that practice during the teaching - relevant exercises that push a little beyond the material you’ve just covered works best for me.
You have said exactly nothing that discounted what I said. Please don’t piggyback your “let me tell you how awesome I am and how great I think my way of doing things” drivel on my simple response. It’s really pathetic.
I don’t see what you’re getting at. Books only provide information, learning is the responsibility of the reader. I don’t think anybody’s claimed otherwise.
And it’s the same with literally everything. Nobody learns to drive by reading a book, or learns carpentry from a carpentry book, or learns advanced math by merely reading a book, etc.
Learning anything requires doing and practicing. Just reading a book or listening to a lecture isn’t going work except maybe for the most trivial things.
“You won’t learn how to write a novel by reading Betty Azar’s grammar book.”
I managed to learn quite a lot from books (Various books on programming languages (Java, Python, Perl, …) and others like SICP). Not that I just read the books without writhing anything or using Google, but I got quite far. The main problem is that if you get to choose you’re own “schedule”, you might keep on avoiding more boring but important topics, like in my case computer architecture.
I learned programming from a book, which included lots of code examples, but it was back in 2002 when paper was easier than the internet.
Now I’m actually curious, does anyone learn programming from a book?
Yes and no. I learn programming languages from books because I want to know more about the semantics than pure examples often provide.
(Grrr.. hit “post” by mistake…)
As for programming, it would be unfair to say that learning hasn’t been at least well supplemented by books. It’s certainly a lot of “learn by doing”, but there’s a good mix of learning from others’ experiences as well. It’s a stretch to say I’ve learned programming from books and at the same time it’s accurate to say my programming skills have been enhanced by them.
I would argue the inverse, can you learn programming without “books?” Here I am using “books” to refer to references that an autodidact might employ. I don’t think they can be the sole source of an education, and should be supplemented with real experience. However, they are an important resource early on and, at least in my experience, when continuing to learn. I have been doing this for 20 years now, I am still learning to program - often from books. And while this is not universally true, I have noticed a trend that those who don’t continue to read tend toward stagnation. I can also think of counter examples on both sides of that.
I spent a good chunk of my life in some places, esp in rural areas, without access to a computer or the Internet. I could occasionally get an IT gift from well-off relatives (often chose wrong), find outdated books on any subject in thrift stores, and get recommendations from some elitist, possibly-fake hackers at times. I had to practice programming in my head, on paper, or (on budget) the dirt. Lots of time doing stuff, screwing up, introspecting, and repeating that process. My biggest concern over time was how many bad habits I might have picked up from wrong, mental model of how things actually worked. On top of that, total waste that resulted from having no ability to check my work or get feedback on doing it right.
The habits I developed doing that are probably the reason I still do that to this day with most of the papers and articles. People occasionally are like, “Nick, did you even read the damned article or dig deep into what they said?” Yeah, I probably tried to run through it like I never had access to the actual article or time to do that. I have better excuses for it these days but it could be habitual, too. Double reinforcement. So, it’s possible old habits that worked well enough over decades are hard to ditch. I did in fact learn programming, administration, business advice, speaking, etc from a mix of books and whatever people locally seemed to know about a topic. Cheap paperbacks were all I had for a lot of things.
Due to duck typing design, Interface Segregation and Dependency Inversion principle are not relevant in Ruby.
Due to duck typing design, Interface Segregation and Dependency Inversion principle are not relevant in Ruby.
Sorry, but I strongly disagree with you on this statement. I understand some ruby developers have an aversion to any type system or any formality, but being highly dependent on DT can cause you serious problems. Specially when you’re working with a large codebase, that has been around for a while and abuse on monkey patching.
Here are two good examples where these principles can be applied successfully in ruby and help you bring some sanity to your projects.
Thanks for your feedback.
But, this is not ISP.. The example doesn’t follow the principles:
This example show a FeeCalculator that provides 2 methods..
ISP definitely does apply to Ruby, or any other language, because the principle in itself is not dependent on language constructs. It’s easier to visualize in statically typed languages because it’s explicit, it’s something you need to write. When working with dynamic languages, the construct doesn’t exist explicitly, but you’re still making design decisions about how the classes interact with each other. Understanding and reasoning about how much one class know about another in a given context, is exactly what ISP is about.
For example, in Ruby’s standard library, we have a File and a StringIO class. They each have their own methods, but they also share a smaller common interface. That is not accidental, the library designers made a conscious decision to have similar methods so that the class can be used interchangeably in specific contexts.
As a user of those libraries, you also have an option. You can use methods on those classes that are specific to each one, or you can organize your code in a way where you pick a very small interface that you’re gonna depend on. If you only use methods that are available on both classes, you can pass any of those classes into your component and it will just work.
The main difference on dynamic languages is that you don’t have a fixed set of interfaces that are provided by the library authors. You have a number of interfaces that is equal to the combination of all methods available in that class API.
Every new sprint is a mini waterfall and the stakeholders secretly still treat your sprints as grant tasks.
What is a grant task?
I have a feeling “grant” was meant to be Gantt.
Yeap, it was a typo - sorry about that.
Although I only did this twice this year, working on a train has been an amazing experience. If you travel in a non rush hour, you can grab a good seat and enjoy the view and have a great quality time. But, I’ve been thinking about taking a week off home to work from a cabin in the mountains to see how the experience goes.
That sounds interesting! Sadly there aren’t many trains where I’m at to give it a go :(
The one thing I’ve also considered recently is: https://atinyhouseresort.com/ - I’m not sure how comfortable these places would be , but they look pretty cool.
I once started a big programming project on a 4-day train trip from NYC to SF. I think it’s the most productive I’ve ever been. Having your own little cabin with a wonderful view, perfect silence and no internet reception is perfect working conditions.
I’ve heard some people raving about tiddly wiki for this which seems like it has a lot of flexible interfaces. I don’t share my notes publicly as often, but I take tons of notes, and I almost always have this tui mind map that I wrote open in a tmux pane.
Why don’t you share your notes publicly? I think there is so much value to be had if everyone shared their notes in public.
I have a lot of personal info in there that I don’t need to share. But I am often thinking “I should be writing more for public consumption” and I also started making a gitbook, with sort of a long plan of turning it into a sort of “designing data intensive applications” but with an eye toward actually building the underlying infrastructure that supports data intensive applications. Sort of a missing guide for modern database and distributed systems implementation. But it’s been hard for me to overcome the friction of really building a durable habit of writing for others.
That’s the cool thing about a wiki. You write the notes for yourself. Just share it with others.
Would love to read your book. I’d release it gradually too as the topic of building the infrastructure for data intensive apps is vast.
Not to discourage you from writing, because I do believe that there’s always room for new takes on a topic, but Martin Kleppman’s Designing Data-Intensive Applications may be of interest to you, if you haven’t seen it. I’m not sure that it goes into “underlying infrastructure”, as you’re thinking, though.
I love that book! I want to do something similar but targeting people building infrastructure instead of the applications on top.
Gotcha. That sounds useful, though I’d think less evergreen because the technology on which the infrastructure is built will keep changing.
I’ve seen a lot about the virtues of event sourcing, but a lot less about how one implements event sourcing at different scales. Am I correct that’s the kind of thing you’d dig in to?
No software I tried supported tagging things as public or private. So I am forced to make everything private.
Cowyo is a wiki with public and private pages. Fairly straightforward codebase.
@icefall This void reminds me a lot of maxthink, an old DOS personal organizer (http://maxthink.com) I’ll take a deep look, thanks for sharing.
@nikivi, your gitbook is a prime. Very well crafted. I also try to keep notes on a similar structure but yours are way more strucutred.
The simplicity that was TiddlyWiki has unfortunately been mostly lost in the name of security. It used to be a single file that you could open and edit, and everything would save automatically and transparently.
Now you have to install a browser extension for it to save correctly, which makes TiddlyWiki much harder to transfer between browsers.
Edit: I’m not taking sides on the security-functionality tradeoff, to forestall any off-topic discussion.
However, TiddlyWiki has been along a looooong time (at least 10 years) now, and I assume that this would mean the Wiki portion of the software is superb.
His post reminded me how good was to be “alone”*. The most productive and meaningful work I did on my live was when my internet access and other resources where pretty limited.
During university I remember wget-ing entire docs sessions on 1.44 floppy to read/study during the weekend because I didn’t had internet access. I’ve also implemented two important projects in a clean room design style, no references other than the provided ones.
It’s on my TODO to rent a hut in the woods without internet or cellphone access and take my concentration flow to the next level.
*As Alone I mean most about being offline and not accessible.
My favorite development time is spent on buses, where I get a few hours of “leave me the fuck alone” and “internet connection too poor for anything but IRC and documentation lookup”.
I kinda want to do a long train ride in the US for similar purposes.
My favorite development time is biking trough town and extended forest walks. I think I fix most bugs offline.
That reminds of the Amtrak writer’s retreat (EDIT - I guess it was called a “residency”) that they ran a while back: http://blog.amtrak.com/amtrak-residency/
You can get that benefit in rural areas, too, if you dont bring a smartphone with you. People often discuss drawbacks of being isolated from jobs, few crowds, good Internet, etc. When you need to focus or relax, stuff being far away can make that easy.
My experience wasn’t all that great for writing as I found it difficult to type without mistakes. Other than that, it was not a bad trip.