What are you working on today?

Thread Rating: 9 votes, 5.00 average.
(9 votes)
Results 6,476 to 6,500 of 6516

  1. Post
    Been playing with dotnet core 3 more atm, found some bugs with the vsc extensions lol but has been pretty nice so far. Also been dabbling in Rust and Kotlin too.

  2. Post
    Privoxy wrote:
    There is a really neat little product to help you automate those pesky pull requests, you should give it a go https://www.codacy.com/
    It does actually look really good - even if they did hire you

    Looking to pull in automatic linting and some static analysis on pull requests eventually.

  3. Post
    Privoxy wrote:
    There is a really neat little product to help you automate those pesky pull requests, you should give it a go https://www.codacy.com/

    I've been learning Rust on my weekends and really enjoying it. Being a lot lower level than something on the JVM is something that was a bit of a shock to my computer science knowledge, but it's proving as a good learning experience.
    shit bro


  4. Post
    As we're moving into the cloud/butts, we wanted to switch from our old metrics gathering/alerting, so I've been playing with Prometheus + Grafana.

    I've installed the Prometheus JMX exporter java agent in one of my apps, configured to emit useful metrics for all of the Kafka producers inside it, and... everything just worked.

    I can see why Prometheus/Grafana are the default for a lot of people these days.

  5. Post
    Yup it's what we use.

    Kamon is a great addition to the stack if you want more specific metrics on things.

  6. Post
    Overhauled our internal metrics and monitoring a few months back too.

    Looked at many options - including Prometheus. Ended up on the ElasticSearch stack.

    Fairly easy to configure their "Beats" to do what you want. We have a small agent that monitors our entire VPC.

    And we wrote a small wrapper around their .net client to push custom app metrics into an index, with support for tags and arbitrary properties.

    Kibana is pretty sweet too - probably not as good as Grafana - but you can choose your flavour of visualisations.

  7. Post
    Just won two tickets to Web Summit 2019 for my open source contributions. Looking at the speakers and workshops it's pretty damn overwhelming trying to decide what to see.

    Anyone been in the past and got some sweet tips?

  8. Post
    Have been playing with esp8266 / NodeMCU boards at home, doing some small home automation things with them.

    Got a nice project setup in vsc so I don't have to use the arduino ide, and have a basic C++ project going at the moment.

    So far just connecting to Wifi and setting up MQTT, next step is to add security features then play with the actual automation once I have a solid foundation. Plan on hooking them into home assistant.

  9. Post
    Today's mission - build a Kafka cluster monitoring dashboard on top of Prometheus and Grafana.



    Under replicated partitions and missing partitions turn red as soon as they're greater than zero. Broker load (measured as the inverse of the broker's request handler average idle, a 99% idle is shown as 1% busy) turns yellow at 80%, and red at 90%, as per chapter ten of Kafka, the Definitive Guide[.

    Loving it.

  10. Post
    Currently working on an app that consumes k8s cluster events. Primary reason to do this was to automagically detect deployments of new versions of apps and then create Grafana annotations so it's easier to determine if a sudden spike in metrics relates to a deployment or not.

    I just integrated it into Slack, but it's a bit noisy for a Slack channel tbh:

    Ingress toolbox - MODIFY - rule 3 modified with conditions [{ Field: "path-pattern", Values: ["/rps/*"] }]
    Ingress toolbox - MODIFY - rule 1 modified with conditions [{ Field: "path-pattern", Values: ["/grafana/*"] }]
    Ingress toolbox - MODIFY - rule 2 modified with conditions [{ Field: "path-pattern", Values: ["/prometheus/*"] }]
    Ingress toolbox - MODIFY - rule 1 modified with conditions [{ Field: "path-pattern", Values: ["/grafana/*"] }]
    Ingress toolbox - MODIFY - rule 2 modified with conditions [{ Field: "path-pattern", Values: ["/prometheus/*"] }]
    Ingress toolbox - MODIFY - rule 3 modified with conditions [{ Field: "path-pattern", Values: ["/rps/*"] }]
    Pod hba-tracing-7f6684fd8b-g2nsf - Unhealthy - Readiness probe failed: Get http://10.0.0.0.1:8773/up: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
    CronJob jaeger-es-index-cleaner - SuccessfulCreate - Created job jaeger-es-index-cleaner-1569282900
    CronJob jaeger-spark-dependencies - SuccessfulCreate - Created job jaeger-spark-dependencies-1569282900
    Job jaeger-es-index-cleaner-1569282900 - SuccessfulCreate - Created pod: jaeger-es-index-cleaner-1569282900-6r9nn
    Pod jaeger-es-index-cleaner-1569282900-6r9nn - Scheduled - Successfully assigned tracing/jaeger-es-index-cleaner-1569282900-6r9nn to ip-10-0-0-2.eu-central-1.compute.internal
    Job jaeger-spark-dependencies-1569282900 - SuccessfulCreate - Created pod: jaeger-spark-dependencies-1569282900-mlh6m
    Pod jaeger-spark-dependencies-1569282900-mlh6m - Scheduled - Successfully assigned tracing/jaeger-spark-dependencies-1569282900-mlh6m to ip-10-0-0-1.eu-central-1.compute.internal
    Pod jaeger-spark-dependencies-1569282900-mlh6m - Pulling - pulling image "jaegertracing/spark-dependencies"
    Pod jaeger-es-index-cleaner-1569282900-6r9nn - Pulling - pulling image "jaegertracing/jaeger-es-index-cleaner"
    Pod jaeger-es-index-cleaner-1569282900-6r9nn - Pulled - Successfully pulled image "jaegertracing/jaeger-es-index-cleaner"
    Pod jaeger-es-index-cleaner-1569282900-6r9nn - Created - Created container
    Pod jaeger-es-index-cleaner-1569282900-6r9nn - Started - Started container
    Pod jaeger-spark-dependencies-1569282900-mlh6m - Pulled - Successfully pulled image "jaegertracing/spark-dependencies"
    Pod jaeger-spark-dependencies-1569282900-mlh6m - Created - Created container
    Pod jaeger-spark-dependencies-1569282900-mlh6m - Started - Started container
    CronJob jaeger-es-index-cleaner - SawCompletedJob - Saw completed job: jaeger-es-index-cleaner-1569282900
    CronJob jaeger-es-index-cleaner - SuccessfulDelete - Deleted job jaeger-es-index-cleaner-1569023700
    CronJob jaeger-spark-dependencies - SawCompletedJob - Saw completed job: jaeger-spark-dependencies-1569282900
    CronJob jaeger-spark-dependencies - SuccessfulDelete - Deleted job jaeger-spark-dependencies-1569023700
    Pod hba-tracing-7f6684fd8b-g2nsf - Unhealthy - Readiness probe failed: Get http:///10.0.0.0.1:8773/up: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
    Pod hba-tracing-7f6684fd8b-g2nsf - Unhealthy - Readiness probe failed: Get http:///10.0.0.0.1:8773/up: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
    Pod hba-tracing-7f6684fd8b-g2nsf - Unhealthy - Readiness probe failed: Get http://1/10.0.0.0.1:8773/up: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
    So now I'm going to pipe it via Kafka via Logstash into Elasticsearch instead, might continue the Slack integration for important events, but need to define what those are.

    And boy, I've had some real fun with the Python kubernetes client lib. Like how its authorisation times out relatively quickly so you need to reload your kube config and then recreate the client when that happens...

    ...or when you're watching events, eventually the last known resource-version that gives you a high water mark, expires within the cluster, and then instead of the 410 returned by the API being correctly handled or exposed for you to handle, instead the client tries to parse it as an event and then throws a ValueError instead....

    https://github.com/kubernetes-client...base/issues/57
    https://github.com/kubernetes-client/python/issues/741

    Ah, the open source life. I'd contribute to FOSS, but there's two open PRs for both of those.

  11. Post
    That looks handy af, might try similar at work ��

  12. Post
    This is pretty much my main processing loop - it has a bunch of queues to communicate with various receivers running in their own threads:

    Code:
        while True:
            cl: CoreV1Api = client()
            w: Watch = Watch()
    
            def stream(rv):
                if rv is None:
                    return w.stream(cl.list_event_for_all_namespaces)
                else:
                    return w.stream(cl.list_event_for_all_namespaces, resource_version=rv)
    
            try:
    
                print("Beginning to stream")
                for watched_event in stream(resource_version):
                    event = watched_event["object"]
                    resource_version = event.metadata.resource_version
                    for queue in queues:
                        queue.put(event)
    
            except ValueError:
                print(f"Last resource_version expired, resetting to None")
                resource_version = None
                continue
            except ApiException as e:
                print("Auth issue, recreating client")
                continue
    TBH I'd probably recommend the Go k8s client.

  13. Post
    Edward Diego wrote:
    This is pretty much my main processing loop - it has a bunch of queues to communicate with various receivers running in their own threads:

    Code:
        while True:
            cl: CoreV1Api = client()
            w: Watch = Watch()
    
            def stream(rv):
                if rv is None:
                    return w.stream(cl.list_event_for_all_namespaces)
                else:
                    return w.stream(cl.list_event_for_all_namespaces, resource_version=rv)
    
            try:
    
                print("Beginning to stream")
                for watched_event in stream(resource_version):
                    event = watched_event["object"]
                    resource_version = event.metadata.resource_version
                    for queue in queues:
                        queue.put(event)
    
            except ValueError:
                print(f"Last resource_version expired, resetting to None")
                resource_version = None
                continue
            except ApiException as e:
                print("Auth issue, recreating client")
                continue
    TBH I'd probably recommend the Go k8s client.
    Ah yup cheers.

    If it isn't C# or TypeScript I probably won't be able to use it sadly, python gets in sometimes but \_(ツ)_/

  14. Post
    There's a beta C# client and JS client I presume you can use from TS https://github.com/kubernetes-client

    The basic API usage is the same though. I've also changed my main loop to a) drain the events on start-up and b) try to sort the initial events into vague chronological order, because they don't come out like that.

  15. Post
    There's a beta C# client and JS client I presume you can use from TS https://github.com/kubernetes-client

    The basic API usage is the same though. I've also changed my main loop to a) drain the events on start-up and b) try to sort the initial events into vague chronological order, because they don't come out like that.

  16. Post
    Cheers, will check it out!

  17. Post
    I had to show threads from the last year to get this to show up. Has anybody here moved from development into a management role e.g. development manager? If so how did you find the change?

  18. Post
    ED is the man to talk to about this. I have multiple offers over the years and considered it seriously each time, but I don't feel like I'm "done" with being a SWE yet and I still have more I want to achieve in my current state before changing the game up by stepping into that role...

  19. Post
    DW wrote:
    I had to show threads from the last year to get this to show up. Has anybody here moved from development into a management role e.g. development manager? If so how did you find the change?
    I enjoyed it

    Full disclosure - I dropped back from it because my personal life was interfering with my ability to perform while I dealt with the end of my marriage and the court battles and suddenly becoming a full-time Dad of 5.

    I aim to get back there one day, but, if I'm being honest, my personal issues were very visible to our employees and impacted my work, and I lost a lot of mana as a result of it, so I need to focus on being a good senior dev to rebuild the trust and relationships I need. So my experiences are about 18 months old.

    I loved it - I'm more of a natural personality fit to people work than engineering I feel, I love the problem solving aspect of coding, but find myself easily bored by coding that isn't solving a problem for someone faster. Churning out yet another API bores me to tears etc.

    I loved being able to coach teams in difficulty, and make a difference. I loved earning the trust of people, so people could come to me for advice, to ask me to mediate an interpersonal conflict, or just to vent. I loved mentoring people and helping them grow in the directions they desired. I enjoyed being able to protect our devs from the business bollocks that would only impede them.

    But there are downsides. Most obvious one - compared to engineering , software tasks and acceptance criteria are usually very precise (if you're doing it right), and you know what to do, and how to know when you're Done Done.

    Managerial tasks are often nebulous, and often hard to tell when they're finished. And quite often I found myself with no particular tasks to fulfill - but that's heavily organisation dependent, we're a small company (30 pax) with a culture that focuses on self-determining teams, so we've got a culture that is intended to not require too many managers.

    So I would have to seek out issues that I could resolve, and they're always there, so you get really good at sitting with a team and soaking in their energy, and learning their dynamics - what are they frustrated by, who are the dominant personalities, who are people whinging about etc. etc. - but my approach to fixing things was always to "lead from the middle" if I had to lead directly, otherwise I preferred to encourage people to take the lead themselves on things that they were passionate about - obviously doesn't work for some, but when it does, you see them become more engaged - the scrum team I used to be the "leader" of always had the highest engagement rate in the annual survey - 96%, because I did my best to ensure my team mates believed that they had the capacity and authority to changes things that they wanted to change.

    But after a while, they could run just fine without you.

    The other downsides are - you are the filter for the business bullshit. And you also are responsible to the business for delivery. So you have to balance business needs with the needs of your team, and that can be hard. And from my experience, the first time I learned about all the business crap that was going on, and how close we'd come to a cliff at times because of idiotic decisions made higher up the food chain, it scared the crap out of me.

    Also, you'll have to deal with business assholes who are all ambition and no brain, who think they know everything about your job because they took one Information Systems paper while getting a C grade in their BCom, and their Dad's golf buddy is on the board of Datacom, and he thinks that developers are just prima donnas you know? And you have to deal with them effectively, which can involve eating a lot of shit.

    But, overall, I really enjoyed it. AIming to do it again. And frankly, once you hit the top end of "senior developer", there's nowhere else to go for career growth - looking at the adverts in my local market, even moving sideways would keep me at the same payrate at best, most likely would require a cut, and still no room to grow it further.

    Of course, every development coy has this issue, some of them resolve it by introducing "ranks" above senior dev - "Senior Fellow, Distinguished Engineer" etc. etc. etc.

    And lastly, I'd recommend it for the experience - learning that side of the business will give you skills you need if you ever want to run your own business.

    So yeah - job becomes less defined, you have to eat some shit sometime, but you get to do good for people you care about, and it helps you take your career further, mostly recommend.

  20. Post
    Oh, and if you do go in that direction - there's a lot of training available, get the company to pay for it! Natural leadership is one thing, but there are specific strategies and techniques you can use that make life a lot easier. Also, get training on any legal obligations you may now have, especially around performance management responsibilities you may be asked to take on.

    And a final thought - you can't engage in the office gossip anymore, or at least you can't contribute any opinions - but it's always good to keep an ear on to pick up trouble.

  21. Post
    Edward Diego wrote:
    I enjoyed it
    /snip

    But, overall, I really enjoyed it. AIming to do it again. And frankly, once you hit the top end of "senior developer", there's nowhere else to go for career growth - looking at the adverts in my local market, even moving sideways would keep me at the same payrate at best, most likely would require a cut, and still no room to grow it further.

    Of course, every development coy has this issue, some of them resolve it by introducing "ranks" above senior dev - "Senior Fellow, Distinguished Engineer" etc. etc. etc.
    A lot of good advice in there from ED. As always, a sound voice of reason.

    Agreed that there's not much above "Senior Developer" unless you take on some leadership.

    I found myself in a weird, but good place. I'm a "Technical Lead" - which sits somewhere in the middle of a Senior Dev and a Solutions Architect. We don't have the need for SA's, but I'm more the voice of reason around implementations at a higher level and informing direction to the C level. This also entails me "leading" a scrum team.

    We tend to use "matrix management", which each product member has two managers as such. One for HR/General stuff (Product Team Lead) and one for the workload (Scrum Team Lead). This seems to work fairly well. And it opens another channel should anyone not be getting a resolution through the direct manager.


    Having lead teams in the past, one thing that never really appealed to me was HR side of the team, performance management and general oversight on leave etc.. In saying that, I try ensure that my team has everything they need to deliver, and sometimes it can get into a grey areas of responsibility - but it's rare, and the team leads are constantly talking so it's short lived.

  22. Post
    What am I working on? angular / bootstrap admin system.

  23. Post
    Today, trying to document several features of a large system for a 3rd party who needs to understand these features in order to incorporate them into their ML model that they're building for us.

    Documenting such things is a great reminder of how much you forget about your own system.

  24. Post
    looking forward to adding up new features to my gaming store to increasing customer engagement and conversion rate

  25. Post
    JetBrains Mono is a new font I've been using, thought I'd share it here.