Hacker Newsnew | past | comments | ask | show | jobs | submit | cyanic's commentslogin

From my experience it was quite usable on Pixel 8a, but I did experience problems.

For context, I use it mostly for web development. It runs a desktop environment with VNC, so I'm able to connect and run software like a browser. I don't develop on the device, but instead connect to a remote machine. Although the browser takes a few seconds to start, I didn't have any issues doing frontend development or doing web searches and reading docs, but I tend to be careful regarding the number of open tabs.

The Terminal app does crash from time to time. It can crash after 15 minutes, but I've also had it running for about 2 hours without issues. I'm not bothered by this as I just reconnect and continue where I left.

The reinstall is not needed every day. When I run the app, sometimes it says there was an unrecoverable error and suggests to reinstall. I ignore this, because it's a timing issue; the app was slow to start. Usually, if I run it again after closing the activity, it starts normally. The same VM has been running for me without a need to reinstall for a few months.

The battery usage is not too bad. I use an external display and make the phone screen black during this time. The battery gets depleted at a rate between 5% and 20% per hour, but this is only for active usage. I haven't been running it all the time in the background.


  Location: Europe
  Remote: Preferred (any timezone)
  Willing to relocate: Yes
  Technologies: Go, Python, JavaScript, C, C++, Bash, HTML/CSS, SQL, ES6+, PHP, GNU/Linux, PostgreSQL, MySQL, SQLite, GraphQL, gRPC, Docker, Docker Compose, Git, CI/CD, Flask, FastAPI, Node.js, React, Next.js, Grafana, Prometheus, Kafka, Elasticsearch, Redis, KVM, Kubernetes, Nomad, Digital Ocean, Scaleway, AWS, GCP
  Résumé/CV: Upon request
  Email: hired at codecyanic dot com
Hi, I'm a backend-focused generalist software engineer with over 10 years of experience. My expertise is in Go and Python backend development, as well as JavaScript frontend development. I have a strong experience in technical leadership and driving projects from inception to completion.

I've founded multiple business, so I also have experience that comes from wearing many hats like Product Management, UI/UX Design, Customer Success and QA.

I'm looking for a remote opportunity, either full-time or part-time, but I'm also open to relocation (especially Southeast and East Asia).

If you'd like to see my work, check out https://gitfront.io. I wrote the frontend, backend and did the design.


We solved the problem of deleting old files early in our development process, as we wanted to avoid situations such as this one.

While developing GitFront, we were using S3 to store individual files from git repositories as single objects. Each of our users was able to have multiple repositories with thousands of files, and they needed to be able to delete them.

To solve the issue, we implemented a system for storing multiple files inside a single object and a proxy which allows accessing individual files transparently. Deleting a whole repository is now just a single request to S3.


I built a platform for sharing git repositories: https://gitfront.io

What is your tech stack?

  Backend: Golang
  Frontend: HTML, Plain JavaScript and CSS
  Database: PostgreSQL and object storage
I run everything on a single dedicated server on a VM. Services are deployed as containers and managed using HashiCorp Nomad.

On the backend there is a custom task queue which delegates work to worker instances. Repositories are rendered as static HTML and stored on object storage. As each repository is stored as a single object there is also a custom proxy that allows serving individual files from objects. All of this is written in Go.

The frontend currently consists of a landing page without any JavaScript and a web app which builds most elements using JavaScript. Everything is styled by hand using CSS.

Why did you choose it?

I chose to use technologies that would allow me to maintain everything years from now without having to rewrite a lot of code. I wanted to have something that would run fast, work reliably, have a small number of dependencies and that would allow me to develop at a reasonable pace.

As for the infrastructure, I wanted increased availability, more security and control and lower costs.

Do you think your choices had any impact on your success?

Yes, but for me success is being able to learn, delight customers and to satisfy my own standards on how things should be done.


Named parameters using a struct.

    struct calculate_args {
        int x, y;
        enum {add=0, sub} operator;
    };

    int calculate_func(struct calculate_args args) {
        if (args.operator == add)
            return args.x + args.y;
        else
            return args.x - args.y;
    }

    #define calculate(...) calculate_func((struct calculate_args){__VA_ARGS__})
Now you can combine positional and named parameters or omit them.

    calculate(1, 3); // 4
    calculate(8, 3, .operator=sub); // 5
    calculate(.operator=sub, .y=7); // -7
Works very well in cases where there is a lot of parameters that default to 0. Keep in mind that you still need to know how structs work and you lose compile-time error detection.


In a similar spirit, overloading functions based on the number of parameters. Even works with tcc.

    #include <stdio.h>
    #define CONCAT2(a, b) a##b
    #define CONCAT(a, b) CONCAT2(a, b)
    #define COUNT_ARGS2(a0, a1, a2, a3, a4, a5, a6, a7, a8, N, ...) N
    #define COUNT_ARGS(...) COUNT_ARGS2(__VA_ARGS__, 9, 8, 7, 6, 5, 4, 3, 2, 1)
    #define foo(...) CONCAT(foo_, COUNT_ARGS(__VA_ARGS__))(__VA_ARGS__)

    void foo_1(const char *a){
        printf("one arg: %s\n", a);
    }

    void foo_2(int a, int b){
        printf("two args: %i and %i\n", a, b);
    }

    int main(){
        foo("asdf");
        foo(314159, 271828);
    }
Small gotcha: Does not work with zero parameters, but functions with zero parameters probably mess with global state and that's evil anyway.


If other people use and debug your code please consider NOT using “#define” meta programming. They are a nightmare to debug.


This!

I just wanted to post it, but you already did. :-)


I created an app similar to Multi, but for Linux. If anyone is interested, take a look at DWAS[0][1]. It allows blocking requests, injecting scripts and applying custom styles among other things.

[0] https://gitlab.com/codecyanic/dwas

[1] https://gitlab.com/codecyanic/dwas-manager



You don't need to ask for their username. You don't let them see what code looked like earlier in history. You don't give write access to the repo. It is much quicker to send a link.

The most useful scenario is when you want to give access to a potential employer. If you are talking to an HR, it might be awkward to ask for a username of the developer who is going to take a look at your code.

Also some people don't have an account on the platform you are using.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: