Avatar of Christian Stefanescu

Christian Stefanescu

Head of IT at lawpilots
Head of IT at lawpilots·

It is not too hard to land on Git for version control nowadays. Although it doesn't have the best user experience or user interface the tooling around git has "won" and there is little reason to look at anything else.

Overall git is fast, has "cheap branches" and the tools and documentation around git make up for what is lost.

READ MORE
12 upvotes·3 comments·13K views
Harry Slaughter
Harry Slaughter
·
June 11th 2021 at 8:27PM

As far as RCSs go, Git is no less user friendly than other systems. I've used CVS, RCS, Perforce, SVN, Mercurial, Bitkeeper (the one that caused Git to be born) and others I can't recall. Git is by far the most reliable, fastest, most advanced of any system out there. And if you're not comfortable on the command line, I'd have to wonder what you're doing using Git at all.

And there are always Git GUIs that can take the edge off. Save your time and just get the best one out there, GitKraken: https://www.gitkraken.com/ I use both a GUI when I'm just browsing and the CLI when I'm working.

·
Reply
Christian Stefanescu
Christian Stefanescu
·
June 15th 2021 at 9:56AM

I am comfortable with the command line and I am strictly speaking of the user experience there. It is partially broken because it exposes quite a bit of the underlying data model. Without understanding that you have to resort to learning certain invocations by heart or looking them up.

One large inconsistency is around `git checkout` being used for multiple actions (not just checking out) - recently this has improved by the addition of `git switch`.

Another big gripe is the inconsistent use of command line arguments and flags, see for instance https://stevelosh.com/blog/2013/04/git-koans/#s4-the-hobgoblin

Mercurial - which you are familiar with - is consistently better than git at everything related to the CLI user interface and experience.

·
Reply
Prolay Chaudhury
Prolay Chaudhury
·
June 22nd 2021 at 4:13PM

Would you please share few excellent resources based on your experience?

·
Reply
Head of IT at lawpilots·

Our default RDBMS of choice is PostgreSQL because it is an astonishingly well executed piece of software. Reliability, stability, documentation, speed, ease of use are all there for us. While we don't have huge amounts of data to process, we still enjoy the excellent community and great tooling around Postgres. And the excellent query plan analyzer helps us troubleshoot bottlenecks fast. It also helps that Postgres is available as a hosted option with pretty much any hosting option we might be looking at.

READ MORE
6 upvotes·2.5K views
Head of IT at lawpilots·

A big part of our needs fits perfectly into what Django has to offer: an ORM with support for PostgreSQL , the amazing auto-generated admin interface, consolidated tooling around the application lifecycle and a well-established community with solutions to the majority of common problems.

We use Django whenever we need the auto-generated admin and the friendly templating language to build capable web applications which are relatively easy to maintain for a comparably long time. The excellent integrations for Celery and Django REST framework make it easy to build the necessary integrations with other services.

READ MORE
5 upvotes·79.1K views
Head of IT at lawpilots·

If you are building an API with Python there are lots of good reasons to pick FastAPI. It is a modern framework with very good documentation and a great community built around it. It supports async Python and it builds on Starlette and pydantic to provide ergonomics and speed. One of the bigger wins is the integrated documentation browser alongside the great testing support.

One part that was not as easy to get into was the proper use of the dependency mechanism, but once that was solved FastAPI remains a great choice.

READ MORE
4 upvotes·1.4K views
Head of IT at lawpilots·

While I love and use PostgreSQL , I would definitely recommend having a look at SQLite as well. It can be a solid database for lots of applications and it brings some advantages in terms of handling: you don't need a server running, which makes things like testing, deploying or backing up databases much easier. Through the ORM in Django you are one abstraction level away from your database anyway and switching later on is definitely an option, but I believe SQLite is very good for pretty much all the small applications you can think of.

READ MORE
3 upvotes·27.9K views
Head of IT at lawpilots·

If you don't want to use an ORM but also don't want to write that bit of convenience wrapper on top of SQLAlchemy or the raw SQL driver, PugSQL is quite the nice middle ground. It puts the SQL in flat files, following a convention which annotates them with parameter names and that makes the whole DB querying logic very easy to follow.

READ MORE
3 upvotes·1.2K views
Head of IT at lawpilots·

Makefiles are the common denominator to getting things up and running across our repositories. Even though we are slightly abusing them (with PHONY targets) and as long as we are consistent about naming targets it's the fastest way to bring up a development environment or look at what the CI system is doing. And all of this works independent of the repository-specific environment (programming language, framework, even OS).

READ MORE
3 upvotes·167 views
Head of IT at lawpilots·

When you focus on application development and not on maintaining infrastructure, a PaaS provider is a good choice. Render adds quite a bit of usability on top, with the pretty good (and getting greater) Dashboard, the Github integration (triggers as well as environment listing), deployment hooks, deployment notifications, hosted PostgreSQL option. But one of the things I like best about them is that they are very transparent about what they are working on and very helpful to provide workarounds when things are missing. At the current pace of development I think Render will become an awesome platform in the next years, but right now it already is a perfectly usable platform for us.

READ MORE
3 upvotes·159 views
Head of IT at lawpilots·

While looking at end-to-end testing solutions, Playwright was the one that fit best for us. First of all the first-class Python support including integration with pytest is great. The Github action was very helpful and this meant we got started really fast and were able to focus on writing tests as opposed to figuring out CI dependencies.

Playwright comes with the right tooling you would expect. The interactive debugger is very valuable, automatic screenshotting was easy to set up. When writing tests we use the interactive code generator as well.

READ MORE
2 upvotes·9.6K views
Head of IT at lawpilots·

We love Python for being expressive, adequate in many situations and for its huge community of libraries and developers. We default to writing Python because we are comfortable in this ecosystem and community.

READ MORE
2 upvotes·160 views