1. 3

    I like the idea of this page. It’d be great to have one for DNS or HTTP.

    1. 7

      “The DNS protocol has a field in the header called ‘Number of Questions’.”

      Yeah.

      “So that would imply you can ask multiple questions in one request.”

      Makes sense to me.

      “Here’s a packet with multiple questions.”

      DNS format error: too many questions.

      1.  

        This is not what you’re asking for, but I found this site to explain DNS for non-geeks pretty well: https://howdns.works/

      1. 18

        Automatically closing stale issues is a useful signal that the project follows the CADT development model. https://www.jwz.org/doc/cadt.html

        1. 11

          That seems a bit harsh. People posting random non-issues can be a genuine issue for larger projects. People posting on long-since solved issues is also an issue, which tends to be >95% generic support or outright nonsense, and <5% useful.

          I don’t care much for auto-close bots, but I understand why people use them. Managing all of this requires a significant amount of time.

          I bet Angular had this exact problem; JavaScript tends to attract a lot of beginners and you’re forever cluttering the bug list with non-bugs unless you’re really diligent about maintaining this, and I can’t blame the maintainers on wanting to focus on actually maintaining the Angular project instead of guiding the endless stream of new users unfamiliar with Angular, JavaScript, etiquette, etc. It’s essentially the “Eternal September” problem.

          1. 4

            Can’t both of those issues be solved, well, closing the issues manually?

            I’d assume long-since solved issues should be closed because solved. For “junk” issues, generic support and whatnot, is it really better to just let them sit open for a week or two (or however long the bot takes) rather than just manually marking them as “offtopic/support/wtfisgoingonhere” and closing them?

            1. 9

              I’d assume long-since solved issues should be closed because solved.

              Yeah but people will comment on them. With this I meant the “lock bots” that lock issues after being closed for n days which prevents adding new comments.

              As for manual closing/locking, sure, but that’s not “free” time-wise, and it can be emotionally draining. I don’t really want to tell people to ask their question somewhere else or that they’re making zero sense, but I also don’t necessarily want to provide mentoring to random newcomers as I got a life to lead and stuff to do. People can also get angry or even abusive about, no matter how nicely and gentle you phrase it (I’ve had that even with random strangers emailing me out of the blue because they saw me on Lobsters, Stack Overflow, GitHub, or wherever). It’s not super-common, but it sucks when it happens.

              A bot just makes all of this easier and avoids the emotional drain. Is it the “chicken way out”? I suppose it is, like I said I don’t use it myself and generally just manually lock old issues and such if they attract a lot of comments, but I also never maintained a project the size of Angular, and I can see the reasons why people would use it.

              I think the “emotional cost” of maintaining larger open source projects is often underestimated. Everyone is different and some people struggle with this more than others, but personally I find it hard. I want to be helpful, but that’s just not feasible or realistic beyond a certain scale so there’s some amount of (internal) tension there. It also leads to situations where you feel obligated to do things that you don’t really want to do, and this is how maintainers burn out.

              In Bristol there are many homeless people asking you for money; walking to the city centre or Tesco’s (~2km) can easily mean you’ll be asked 3 or 4 times. Sitting out on the harbourside for dinner or a drink will net you about one homeless person every 30 mins or so on average. Before I lived there I never hesitated to give some change if I had any, because these kind of things are a fairly rare event in Eindhoven. But if you’re asked multiple times every day it just becomes unrealistic. I found it difficult, because I don’t want to say “no”, but I also can’t say “yes” all the time. One of the many reasons I was happy to leave that place.

          2. 2

            I’m curious, which projects do you maintain?

            1. 1

              I see this is the ops world too. Not just devs.

            1. 5

              Writing a conference talk that I’m supposed to give next week.

              I, uhhh, procrastinated a bit. :(

              1. 2

                You’re starting one week ahead? That’s like crazy early! :o)

                (I’m notorious for pulling all nighters to get them ready in time)

                1. 2

                  It takes a while to make some sick memes with pictures I can 100% say I either own or are totally free for use. ;)

                  1. 2

                    Don’t we all?

                  2. 2

                    Good luck :)

                    1. 1

                      Thanks!

                  1. 1

                    Any thoughts on Exoscale vs Vultr vs others?

                    1. 2

                      Exoscale is cheap and yet it’s perfect. The only drawback is they’re available only in Europe and I live in Québec so I have some unavoidable latency crossing the ocean.

                      Vultr is quite good. I recently setup some BGP with them (https://www.vultr.com/features/bgp/) and while the support was reactive on a Friday evening (which I didn’t expect because I pay less than 10$/month) the work was far from perfect. Other than that I think they’re a pretty good deal.

                      But I mostly picked both because they officially support OpenBSD. While OpenBSD works fine on KVM virtualization, I don’t want to deal with the support blaming the OS for something unrelated, just because they don’t officially support the OS.

                      1. 3

                        There’s no such thing as perfect until you try Hetzner Cloud.

                        Trust me, never looking back.

                        1. 1

                          I assume for BGP you have ipv6 prefix? Curious what it was like getting one for yourself. As far as I’ve read it’s quite expensive and annoying to do it personally now.

                          1. 1

                            Yes my ASN is IPv6 only. I plan to write about that in my next article, but it may be a few weeks/months until I publish it!

                      1. 12

                        I grew tired of always looking up the magic invocation to add, remove, upgrade dependencies, so I assembled all the concepts you need to know to use Go modules effectively on a single page. Hopefully it’s helpful to others.

                        1. 3

                          You did a great job at keeping it brief while still being usable.

                          Thanks!

                        1. 1

                          I remember doing something waaay simpler on a PIC18F4550 for a uni project.

                          As cool as it may be, I found it one of the most frustrating projects I’ve ever built.

                          1. 1

                            Was that in assembly?

                            All these bank selections a PIC needs seem to be not very convenient for both humans and compilers…

                          1. 10

                            I was expecting these projects sooner rather than later.

                            In 10 years everyone will be using heavily-automated p2p VPNs like Tailscale. Tailscale is an amazing product but I do understand the case for running your own control plane.

                            Keep it up!

                            1. 1

                              One thing I’d like seeing is an Among Us player discovery something (channel, subreddit, app, website…).

                              I am fortunate enough to have multiple >10 friends groups to play the game with, but not everyone’s that lucky, there may be small groups of 3-4 or even lonely players that don’t get to enjoy the game at its best.

                              I may not have the time to code that, but if someone does this reach me out for hosting.

                              1. 6

                                Very interesting, I think it deserves more attention. The title might not be the catchiest though. Very very interesting. Well written too.

                                1. 3

                                  Maybe a title like “Publishing expired DKIM private keys would increase user security”

                                  1. 2

                                    I’d considered that, but I don’t want to steal the limelight from Ryan who already wrote a post that makes that point.

                                1. 1

                                  Hetzner has the best web UI of all cloud/IaaS/etc. providers I’ve used.

                                  I wish they had more locations though, they would save me some DigitalOcean and AWS €.

                                  1. 12

                                    You know Catalan (language from the Catalonia region in Spain) in its own language is written “Català”, right?

                                    Reading this with sentences like “The Catala language is special because…” or “The Catala language should…” for catalan speakers is the equivalent of replacing “Catala” with “English”.

                                    Also, the fact that it derivates from French, which is a latin language very close to catalan, makes it even weirder.

                                    1. 7

                                      It’s as if a Catalan university released a programming language called “Français”, named after some guy named “Pere Français”. Quite absurd.

                                    1. 3

                                      Good advice; last time this advice came up on Lobste.rs, my approach got voted down, but it’s realistic and honest: if I’m going to paste anything from an untrusted source near a command interpreter, I hit alt-v (or esc-v) to invoke a text editor (edit-command-line widget in zsh, bound in my shell) and then "+p to paste from the clipboard/selection into the text editor, where I can look at it, make sure I haven’t mis-selected text, that nothing else was happening; adjust as appropriate, and then save, which drops the edited line back in the shell line-editor, waiting for me to hit return.

                                      It’s a tiny bit of obscure setup but having it a single keystroke away and the convenience of the other things I can do mean that it pays dividends, even if I’ve only … twice? seen something truly hinky in the results.

                                      zle -N edit-command-line
                                      bindkey '^[v' edit-command-line
                                      bindkey '^[OP' edit-command-line
                                      

                                      Bracketed paste mode in Zsh is not perfect but is a nice guard, and enabled by default these days, so if I do slip up and forget to hit esc-v first, there’s still some limited protection: belt and braces together.

                                      1. 2

                                        I suspect an even safer is to look at the bytes in the clipboard with something like: xsel -ob | od -c. That way, nothing pasted can accidentally become an escape character for something else, and you can easily see any non-printing or control characters.

                                        1. 2

                                          If anyone runs macOS I do something similar with macOS’ Spotlight.

                                          Spotlight is one Cmd+Space away, paste command there, edit, select all, copy, paste on terminal.

                                          Simple and comes installed out of the box.

                                        1. 5

                                          I really wanted to do install this but then running a Clickhouse DB + Postgres server dependencies didn’t make sense for my small static blog. I also explored Fathom which is a decent alternative but they do tracking via cookies for the free version but not for the paid version. Such kind of OSS projects just lose my interest, TBH. (Nothing bad, but I won’t personally like)

                                          I eventually found shynet which I’ve been running since a month and pretty happy with it. Does it’s job and just bare minimum tracking.

                                          1. 2

                                            I was considering Fathom and Matomo for my sites’ analytics as of late, today I found Plausible through this post, and now I found shynet thanks to you, and I find myself agreeing with your points, so I’ll probably try shynet first.

                                            There’s one thing about Fathom/Plausible/shynet that I find interesting, and that is that all 3 designs are very similar, all three show similarly-distributed dashboards, with the same metrics, etc. I’ve never used Google Analytics but, is this because GA pioneered that design and all these “alternatives” followed it?

                                            1. 1

                                              Creator of Shynet here! The monitoring tools you mention do all have similar aesthetics—speaking for Shynet, it was mostly inspired by Fathom (although I designed its CSS library myself, so there are still some key differences).

                                              Happy to answer any questions you might have about Shynet, either here or on GitHub.

                                              Note that unlike Plausible and Fathom, Shynet is not a SaaS—there is no way to use Shynet except to self host it. So the self-hosted experience is the full experience, not a half-baked FOSS version!

                                              1. 1

                                                That’s one of the main criticisms I had towards Fathom and their v1/v2 bs, but seems like Plausible is giving you the choice without taking out any features.

                                          1. 4

                                            What about adding a “self” tag? Enforce one self’s content to be tagged if submitted, else ban/remove/etc.

                                            1. 9

                                              There is a “self” option in the submission page. Maybe the solution would be to display that somewhere in the ui so that it’s more obvious. As to enforcement, I think @pushcx has been really good at enforcing blatant and obvious self-promotion, and I think he catches on quickly to members of the community who are here solely for self promotion

                                              1. 14

                                                It’s already very obvious: “authored” vs “via”

                                                1. 5

                                                  interesting and extremely non-visible. Some sort of UX fail. It should appear like a flag, then it’d have great visibility and allow filtering, to top it off.

                                                  1. 11

                                                    I thought it was quite obvious, especially with the colors (blue for author, green for fresh account, and black otherwise).

                                                    1. 4

                                                      I have to be honest, I didn’t even know what the colors were for (thought it was green for admins for some reason, I guess Reddit influence) before reading your comment.

                                                      1. 1

                                                        I had no idea that the colors meant anything. Is there a doc somewhere that explains all of these “obvious” UI indicators?

                                                        1. 1

                                                          You kind of grok it from context.

                                                          A green username’s profile will say “new user” or similar.

                                                          A blue username is subtly echoed in the “Authored by” text at the top of a comment page.

                                                          But yes, maybe this should be explicitly mentioned in the About page.

                                                        2. 1

                                                          I totally missed it until it’s been pointed out.

                                                      2. 1

                                                        I’m not sure it’s that obvious. I’ve been on lobsters for a while now and this is the first time I’m aware that there is a difference between “authored” and “via” and there is a distinct meaning to each of those.

                                                    2. 2

                                                      Maybe a good compromise.

                                                      1. 1

                                                        Does it even cause any visible difference?

                                                        I don’t think it does, or rather, I’ve never noticed it if so.

                                                        It would be a start to make this visible. Something to consider before taking the next step suggested by the OP.

                                                        1. 5

                                                          9 of the 25 entries in /newest are “authored by” as opposed to “via”.

                                                          It’s definitely something I note when looking at a submission.

                                                          1. 3

                                                            You can filter out tags, if you don’t want “authored by” posts, filter it out.

                                                            I don’t use filters myself, and I wouldn’t use this one as I think some of the coolest posts are authored by this community itself, but it gives OP and others the choice to stop getting that.

                                                            1. 4

                                                              I don’t think it’s possible to filter on the state “authored by/via”.

                                                              I’m tentatively positive to supporting new functionality to do so, but it would have to be created as a pull request as it’s a new feature.

                                                              1. 1

                                                                That’s why I suggested a tag, even if it uses the “I authored this post” checkbox data.

                                                                1. 1

                                                                  Ah ok, I missed that context!

                                                              2. 3

                                                                IMO filtering by “self” would be an anti-feature. Stories should be judged on their own merit, not by who submitted it.

                                                                1. 1

                                                                  Fair enough, the thing is, flags are opt-in. It’s your choice to filter out self-posting.

                                                                  Edit: I actually agree, in fact, I’ve posted my own content here many times in the past, and I wouldn’t filter a “self” tag, just thinking of an easy solution for OPs problem, which I also understand.

                                                          1. 4

                                                            What’s your plan to prevent people from creating sockpuppet account to keep posting their own content?

                                                            1. 5

                                                              I don’t think I need a plan, as there are already rules against sockpuppets, right?

                                                              1. 3

                                                                It’s worth noting that I don’t go looking for sockpuppets except based on user reports. Most of the time they point out (or I notice) that an account is posting vacuous compliments to an article posted by their inviter/invitee, or that low-quality self-submissions regularly show up on the homepage from someone who invited a half-dozen accounts in a day. It’s an infrequent problem that’s not so overwhelmingly compelling that I think it’s worth searching for effectively by site changes like indefinitely retaining logs, recording an IP/browser fingerprint with all user actions, or otherwise adopting other off-putting techniques and tools common in web advertising.

                                                                1. 1

                                                                  Correct, also, it’s easy to link that, as Lobste.rs write-access is invite-only, and recorded.

                                                                  It’s trivial to see whether the sites an account is posting are the same as it’s “parent”.

                                                              1. 16

                                                                A blanket ban seems like a bad idea since there are certainly some people who post good stuff that is relevant, for example @ltratt’s latest submission.

                                                                Drawing the line is really hard. Some accounts are just using the site to promote every little thing they write, regardless of how trivial it is, or they are submitting what are clearly unthought out code ideas with no real implementation behind them, possibly looking for feedback. I really don’t care for these submissions and I think they de-value the site.

                                                                I really want to discourage the latter and I really want to see more of the former. I’m content with the system of raising concerns on IRC or to the mods and having a judgement call made that way rather than banning it. Maybe we can stress something on the submission page.

                                                                1. 4

                                                                  I agree with your point more than others’. The issue IMO is not self-posting, it’s low-effort posting.

                                                                  Stuff like “OpenSSL 1.1.1x released” is worthless, I’m on the mailing list for that. Same goes if your own blog post if it was written in 30 minutes.

                                                                  On the other hand, I found @gthm’s latest post about backups to be great, and it sparked a very interesting discussion in comments. The post was submitted by @gthm him/herself.

                                                                  1. 3

                                                                    Stuff like “OpenSSL 1.1.1x released” is worthless, I’m on the mailing list for that. Same goes if your own blog post if it was written in 30 minutes.

                                                                    Yes, exactly. Low-effort blog posts are actually the thing I’m talking about and want to curtail, and my experience is that they’re pretty highly correlated to self-posts.

                                                                    1. 6

                                                                      A blanket ban on posting your own articles would be throwing out the baby with the bathwater, IMO. Besides, I don’t have the impression that people who post low-effort blog posts are especially concerned with following community rules/etiquette, so they’d probably get posted anyway.

                                                                      I think a discussion on how we can curtail low-effort self-promotion would be useful, but I’m not sure if anything further can be done about this outside of some drastic limitations which would limit the normal usage of the site too. I think this is one of those “it sucks, but it’s the best we’ve got” kind of things.

                                                                      1. 4

                                                                        and my experience is that they’re pretty highly correlated to self-posts.

                                                                        Do you have any sort of numbers, or is that merely a feeling? If it’s a feeling: mine is that it only correlates to self posts of a few notorious offenders (who get flagged or banned after a while anyway), most others are quite selective of what they share, and most likely it’s content that is not low-effort, even if it doesn’t interest me personally. A blog post every few weeks is certainly fine by me, and I’d consider it harmful to give those people the feeling they shouldn’t share what they do or think about. Don’t let a few bad apples spoil it for the rest of us. After all, there are other safe-guards in place (up-votes, flagging posts, etc…).

                                                                  1. 3

                                                                    Wow! And my homelab for the last 9 years has been an old beat up Lenovo laptop with the cheapest external usb-hard drive available..

                                                                    1. 2

                                                                      Old laptops are the best, they even have a built in battery backup that’s already tightly integrated with the OS!

                                                                      1. 1

                                                                        3 months ago I had a similar setup to yours, a ThinkPad X201 with a nice SSD and a USB3 HDD over a USB2 port.

                                                                        Yesterday I had one of the things I learnt with that laptop solve a 2-week partial outage at $WORK.

                                                                        Never underestimate what one can learn from hobbying. Keep it up!

                                                                      1. 4

                                                                        What’s your storage like?

                                                                        I believe we’re pursuing the same goal, I’ve been building cloud-like infrastructure at home for the last ~3 months and our setups are kind of similar.

                                                                        I run MetalLB on top of Kubernetes, Kubernetes on top of Proxmox VMs, and Proxmox on top on 3 NUCs. Storage is provided by a Ceph cluster that runs on those 3 NUCs and seamlessly connects to Proxmox and Kubernetes.

                                                                        It’ll be nice hearing how you run yours and sharing our findings.

                                                                        1. 2

                                                                          May I ask why you run Kubernetes on top of Proxmox instead of bare metal? Just curious

                                                                          1. 2

                                                                            Great question! The answer of which is: flexibility.

                                                                            Try running Wireguard on Kubernetes. Yeah, you can, but it’s an antipattern. Or if and when I want to get into Microsoft envs.

                                                                            Some stuff can’t run on Kubernetes, and so I didn’t want to give up that flexibility. The overhead is minimal, Proxmox VE is just KVM with a clustering engine and a web interface.

                                                                            1. 1

                                                                              Thanks!

                                                                          2. 1

                                                                            I’ve been looking into doing something similar to what you are describing here and I’m curious on the storage side as well. How much storage are you able to squeeze into the NUCs doing this?

                                                                            1. 2

                                                                              Right now you can probably store up to 4-5TiB of M.2+SATA into a single NUC without breaking the bank. Times 3 if you run 3 nodes. A 3-node Ceph cluster’s replication/erasure will reduce that by ~20-40%, depending on your params.

                                                                              Right now, my 3 NUCs provide a Ceph cluster with 1TiB SATA SSD each, for a raw total of 3TiB. Usable storage must be around ~1.8TiB based on my configuration. I don’t need much more to be honest, and I can always add more nodes if it gets tight.

                                                                              My setup goes against many of Ceph’s best practices, but I’m lacking the hardware to run a perfect cluster. My replication levels are lower than should be, my network is 1GbE, etc.

                                                                              That said, I’m very happy with it. Haven’t had any trouble for months, it’s fast enough, provides some sort of high avail., and its interfaces connect natively to Proxmox VE and Kubernetes, among others.

                                                                              If you want extra resources, Mastering Ceph is great, binged through it when setting up the cluster.

                                                                              1. 1

                                                                                Mind if I ask what you paid for that hardware in total? 3 NUCs would that be around $600? Plus another few hundred for storage? Or are you sourcing used gear at substantially cheaper than that?

                                                                                1. 2

                                                                                  More like ~1400€ as I maxed out ram, and SSDs are Samsung EVOs. I use those nodes not only for storage but also virtualization.

                                                                                  :$

                                                                                  1. 1

                                                                                    Ah cool! Which hypervisor are you using? ~1.5 grand doesn’t feel unreasonable for a home lab with 3 physical nodes and a generous helping of storage and RAM.

                                                                                    1. 2

                                                                                      Proxmox VE cluster atop the 3 NUCs, 96GB RAM total, right now at ~50% saturation.

                                                                                      1. 1

                                                                                        I’m looking at options at the moment. If you were setting the lab up again today would you still use Proxmox VE? Good experience overall?

                                                                                        1. 1

                                                                                          If I had enough time, I would’ve loved to use OpenStack (haven’t used it yet, but is a skill I want to acquire) but it was blocking me for too long. Otherwise, I would use Proxmox VE again.

                                                                                          Its design is simple enough that I can run it atop a bunch of Debian servers while running other stuff (such as Ceph).

                                                                                          1. 1

                                                                                            Otherwise, I would use Proxmox VE again

                                                                                            Thanks for the rec!

                                                                                            run it atop a bunch of Debian servers

                                                                                            Am I reading wrong or are you saying Proxmox runs inside debian? I got the impression from the website it was its own distro.

                                                                                            1. 1

                                                                                              The distro they distribute is just Proxmox VE installed atop a pre-configured Debian.

                                                                                              You can actually have Debian installed first, then install Proxmox on top of it: https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Buster

                                                                          1. 6

                                                                            This is a really neat write-up!

                                                                            I’ll admit I’ve been rather avoiding Kubernetes and am just barely beginning to get cozy with things like docker-compose and the like, and this article is making me think I should reconsider that choice!

                                                                            1. 6

                                                                              I recommend looking into hashicorp’s nomad

                                                                              1. 1

                                                                                I adore Hashicorp software, but it would depend upon the goal of working with k8s, wouldn’t it?

                                                                                If the goal is to deploy a technology as a learning experience because it’s becoming an industry standard, as awesome as I’m sure nomad is, it’s not going to fit the bill I’d think.

                                                                                I’m still blown away all these years later by Terraform and Consul :) Those tools are just amazing. True infrastructure idempotence, the goal that so many systems have just given up on entirely.

                                                                                1. 4

                                                                                  To be clear: if your goal is to learn k8s–which is fine; it’s a very marketable skill right now, and I’m 100% empathetic with wanting to learn it for that reason–then I think it makes sense. But for personal use, Nomad’s dramatically simpler architecture and clean integration with other HashiCorp projects is really hard to beat. I honestly even use it as a single-node instance on most of my boxes simply because it gives me a cross-platform cron/service worker that works identically on macOS, Windows, and Linux, so I don’t need to keep track of systemd v. launchd v. Services Manager.

                                                                              2. 4

                                                                                Don’t, just don’t… I am trying to avoid k8s in in homelab to reduce the overhead. Since I don’t have a cluster or any feature in k8s that’s missing in a simple docker (-compose) setup

                                                                                1. 5

                                                                                  It depends on what you call your “lab”. A couple of years ago I realized that there’s only one way I master things: practice. If I don’t run something, I forget 90% about it in 6 months.

                                                                                  My take on the homelab is to use as much overhead as possible. I run a bunch of static sites, an S3-like server, dynamic DNS and not much else, yet I use more stuff/overhead to run it than obviously necessary.

                                                                                  The thing is, I’ve reached a point where more often than not, I’m using the knowledge from the lab at $WORK, even recycling some stuff such as Ansible roles or Kubernetes manifests.

                                                                                  1. 6

                                                                                    I believe this to be the differentiation between a homelab and “selfhosted services”. The purpose of a homelab is to learn how to do things. The purpose of selfhosted services is to host useful services outside of learning time. That is not to say that the two cannot intersect, but a homelab, in my opinion, is primarily for learning and breaking things when it doesn’t affect anything.

                                                                                    1. 2

                                                                                      Yup I think this is the key.

                                                                                      I’m already using docker-compose for my actual self hosted services because it’s simple and easy for me to reason about, back up the configuration of, etc etc.

                                                                                    2. 3

                                                                                      Agreed, it certainly comes with a rather large overhead. I use Kubernetes at work and rather enjoy it. So, it’s great having a lab environment to try things out in and learn, so that’s why I bother hosting my own cluster.

                                                                                    3. 3

                                                                                      I started with docker-compose as I began to learn containerized tech, but transitioned to Kubernetes because the company wanted to use it for prod infrastructure. I actually found that K8s is more consistent and easier to reason about. There are a lot of concepts to learn, but they hang together.

                                                                                      Except PersistentVolumeClaims.

                                                                                      1. 2

                                                                                        Thank you for reading. I’m glad you enjoyed it :)

                                                                                        I’ll say, picking up Kubernetes at home is a good choice if it’s something you want to learn. It’s really useful to have a lab environment to try things out and build your knowledge with projects.