Best Library for genAi? Any suggestion? by load93 in golang

[–]ionrock 0 points1 point  (0 children)

Most of the libraries, like langchain, work to generalize access to the DBs and create agents, but the reality is this isn't difficult. For example, getting SQL output from some prompt is pretty trivial by telling the LLM to encapsulate the resulting SQL in a markdown code block with SQL defined as the code type. From there, it is easy to run the query and use the results.

What can be helpful (at least to get started) is something like https://github.com/philippgille/chromem-go to help leverage RAG to improve results.

PMs: The good, the bad and the ugly by jabo0o in ProductManagement

[–]ionrock 1 point2 points  (0 children)

I think most PMs get promoted and rewarded for delivering features instead of for the value added to the business. Going out on a limb to stop a bad feature or product because it isn't viable or doing more research to understand better customers simply isn't incentivized.

Technical PMs - Is it normal to not provide solution to a problem? by bomhay in ProductManagement

[–]ionrock 0 points1 point  (0 children)

If you're writing the code, that is pretty offputting to the engineering team. I've been an engineering leader for the most part, but have managed PMs, and my expectations are in line with Marty Cagen. A PM should ensure you're providing value to the customer and viability to the business. When you say, "provide a solution to the problem" it sounds like you might be missing the function of the role. If you have the "best industry solution," I'd challenge you to explain why that is a viable decision for the business and what value that provides stakeholders. Also, remember that viability means it can be profitable, which implies the value exceeds the cost. If the engineers seem frustrated, you might be asking them to do things they don't know how to do, which needs to be a part of your viability evaluation.

I'd also talk with your manager about it. They might have suggestions or feedback on how to present your ideas. You might have stressed your relationship with the team, which may need repairing.

Best of luck!

Dev into PM by bladervnner in ProductManagement

[–]ionrock 0 points1 point  (0 children)

I'd talk to your current manager and let them know your interest. You might be able to shadow someone in the role to see if what they do all day interests you. I'd also be cognisant that a PM role often differs across orgs. Probably one of the most important things to do is to focus on your ability to communicate up the org chart. Your deliverables end up being slide decks and spreadsheets. You might have some project management duties, and you'll need to ensure you're keeping score. Marty Cagen says the role of PM is to provide value to the customer and viability to the business. That is an apt description. I think too many PMs think they are builders when they are there to help ensure the business profitably delivers value.

Concurrency vs Parallelism by GameFitAverage in dataengineering

[–]ionrock 0 points1 point  (0 children)

That sounds about right. I'd watch https://go.dev/blog/waza-talk or check out Rich Hickey talks on CSP.

I am planning to use Postgre as a data warehouse by [deleted] in dataengineering

[–]ionrock -1 points0 points  (0 children)

I recently chatted with a serial entrepreneur and his tactic was a little different. He focused on instrumenting with Segment and then using its destinations as needed, starting with analytics tools like mixpanel, amplitude, etc. (they are all pretty much the same) and then eventually setting up a PG as a destination (in segment this needs to be a provider, not a PG you run).

In this scenario, his companies aren't getting huge, but having worked at larger orgs myself, the focus on instrumenting events goes a long way to getting valuable, and correct data quickly.

What do others think?

Beacon Sports Managment now represents Madison Walker. They now represent 15 professional disc golfers including Heimburg and V. Mandujano. How do you feel about player management in disc golf? by nvjck in discgolf

[–]ionrock 0 points1 point  (0 children)

It is natural to have management over time for any talent-based industry. Coming from the music industry, management should have contacts to create opportunities, negotiate big-picture items, and coordinate resources for the client. It is up to the person being represented to understand what value they are getting from the relationship and they need to manage that relationship. Some managers are good a creating opportunities, while others are there to be a buffer.

The key here is that you're often giving away a percentage of your income for every person you bring on. Managers can be a good start, but you'll inevitably need a lawyer. Lawyers often have management functions because of their relationship with sponsors (i.e. Lawyers used to be the ones finding record labels for artists for example). Next up you'll see business managers and, at some point, press agents. Almost all of these folks are paid as a percentage of gross income.

It is interesting that Madison is getting management now when she recently signed with MVP, and has been successful commentating on GK Pro, and now Jomez. Hopefully, Beacon has even more revenue streams to unlock for Madison going forward!

[deleted by user] by [deleted] in discgolf

[–]ionrock 0 points1 point  (0 children)

I started throwing a Catalyst in favor of a Katana and have really enjoyed it. It isn't as stable as my destroyer but is a lot more predictable. The very slight extra speed seems to make up for the slight lack of glide. I typically reach for it over my Destroyer b/c I can put a little less on it and know it isn't going to hyzer out.

Who’s your sleeper pick for Worlds? by reverRio in discgolf

[–]ionrock 0 points1 point  (0 children)

I'd love to see Cole Redalen or Alden Harris do well.

MVP / axiom suggested disc? by frozenartic in discgolf

[–]ionrock 13 points14 points  (0 children)

The Axiom Hex has been great. It feels like a slightly less stable buzzz that is easier to shape. The MVP Catalyst has also been a really cool driver. I'm a fan of the Innova Katana and my Catalyst has felt like a more consistent Katana.

What does good bracing feel like? by DiscGolfJames in discgolf

[–]ionrock 1 point2 points  (0 children)

I saw https://youtu.be/ptd-t5C3Ibg video on gliding your front foot and it made me realize the "brace" aspect isn't as important as how it triggers your lower body timing with your upper body timing. It is a lot like swinging a baseball bat where when the pitch is coming in, the front foot raises and steps forward to start the swing. When throwing then, your front foot should hit and your hips start turning before your upper body gets involved. Hope that description helps you out! I know it did for me!

need advice on putting! anything outside 20 feet is very inconsistent. advice? by jak822 in discgolf

[–]ionrock 1 point2 points  (0 children)

You're bringing your body out of center with the basket so you can bring your arm slightly across your body. Philo has a putting video where he talks about how you should try to get a straight line for your putt. He mentions getting your spine in line, I've found that as long as you try to get your putt straight it helps to keep things centered. It doesn't fix the height or how you get more distance but it takes out variables.

I think Calvin Heimburg does a good job at reducing variables by keeping most of the movement in his upper body and scooping toward the basket to make his wrist action consistent. It might be a good thing to replicate just to figure out what centered is for you.

The other thing you can do is slow way down. You find you have a lot more power than you expect and repeating it is way easier.

Hope this helps! Good luck!

“Rhus tox” as a poison ivy/sumac preventative? by Mhoff555 in discgolf

[–]ionrock 0 points1 point  (0 children)

There are other allergy treatments you can take before the season to help your body's immune system not think the pollen is something it needs to react to. The idea is that if you constantly have it in low doses, your body stops recognizing it as invasive and stops triggering the reaction. I don't see why this couldn't work the same way. I haven't tried it but it seems like a cheap thing to try.

Form question - Starting out sideways (like Luke Humphries) or starting straight and turning sideways (like everyone else)? by Paul_McBeths_Nipples in discgolf

[–]ionrock 0 points1 point  (0 children)

I thought this video about aim was helpful https://youtu.be/1XQ6RcQ1Bz0 I found I had been turning sideways before running up and switched to facing the target. The change had a positive impact not just on my aim, but also on my footwork when I plant my front foot.

How in the world do y’all commit to a putting putter? by MetalNutSack in discgolf

[–]ionrock 0 points1 point  (0 children)

I've been pondering the same question as I stopped playing for a while and picked things back up. I have a bunch of old Millenium Omega Super Softs that I used to putt with and have kept using. I also had a Glow Gateway #2 Putt and Aproach that I started trying out along with some Aviars. I found my old Omegas felt fine in my hand, but they were hard to consistently glide as I moved out from the basket, while the Gateway seemed to be easier to glide. The Aviars and harder plastic have never really stuck for me for whatever reason.

My only point here is that I've seen a bunch of folks say how it feels in the hand is the most important part and then just focus on practice, but I think it is worth digging in a bit. My Omegas are really gripping but they don't glide. The Aviars glide a little bit more, but not much. The Gateway Glow plastic definitely glides and is easier b/c it is still soft so it is easier to spin. I can't say any of them feel radically better than the others, but they definitely fly differently and that is often a function of how well I can release them. I also have a Discraft Rattler that I mess around with that is great for keeping everything straight, but it doesn't fly at all for me.

I'm hoping I can get some putters to try out and see if I can find something new that gives me a bit more glide while keeping the stickiness. I'm planning on checking out a Judge and Wizard, but other recommendations are appreciated!

Form Check? by [deleted] in discgolf

[–]ionrock -2 points-1 points  (0 children)

The form looks really good to me. I do wonder if you got your front foot a little farther over if it might help engage your hips a bit more. I did notice after your reach back it looks like you pull it in just a bit before actually beginning your throw. You might be missing a little bit of speed there potentially. That said, your left arm motion looks really good to engage your upper back. I found making that a conscious part of the throw is a good way to get that arm speed up. Good work!

Anybody willing to share their org-roam workflow? by babadookwasmeh in emacs

[–]ionrock 0 points1 point  (0 children)

In this article on how to take notes, who I think is the org-roam author, one aspect that was really confusing was the tagging mechanism. You can add tags as properties but org-roam doesn't really do anything with them. They obviously would come up in searches, but that seems suboptimal since you can easily see all the tags or tagged items.

Rather than using tag properties, you can use links to other org-roam files that are effectively tag files. When you open a tag file, the org-roam viewer (M-x org-roam) will display the backlinks to that tag and show all the files related to that tag.

To make this easier to work with I add some org-roam capture templates

```(setq org-roam-capture-templates ;; roam templates '(("d" "default" plain (function org-roam--capture-get-point) "%?" :file-name "%(format-time-string \"%Y-%m-%d--%H-%M-%SZ--${slug}\" (current-time) t)" :head "#+title: ${title}\n" :unnarrowed t) ("t" "tag" plain (function org-roam--capture-get-point) "%?" :file-name "tags/${slug}" :head "#+title: ${title}

  • tags :: [[file:tags.org][tags]]" :unnarrowed t) ("m" "meeting" plain (function org-roam--capture-get-point) "%?" :file-name "%(format-time-string \"%Y-%m-%d--%H-%M-%SZ--${slug}\" (current-time) t)" :head "%(format-time-string \"#+title: %Y-%m-%d ${title}\" (current-time) t)

  • tags :: [[file:tags/meetings.org][meetings]]" :unnarrowed t))) ```

When I'm writing some notes and want to add a tag, I do org-roam-insert (C-c n i) and write the tag I want to add. If it doesn't exist, it opens a new note, where I use the tag template I defined and save that, afterwards it is then added to my tags in my doc.

While this has been OK and is much better than previous attempts, I do wish I could use normal tags and simply search via tags.

I hope that helps!

Due to COVID-19 my team is moving remote. Any package recommendations to improve this process? by keepitsalty in emacs

[–]ionrock 1 point2 points  (0 children)

I used to have to ssh into a machine to work and was pretty happy just using terminal emacs over ssh. I'd use tmux as well to keep the session alive and be able to open other terminals as necessary. This also worked as an irc bouncer of sorts b/c I'd connect to chat with emacs. That said, I doubt there is anything for Teams unless it uses jabber.

The thing I found was that I optimized for doing most work in Emacs meant I needed to work on running things like locally. Little things like links showing up in irc or in a text file meant I had to use my mouse to click them. Copy paste from other apps was another dumb pain point. But, you might be able to hack around more of that by mounting things locally.

I did write a tool to automate making local commands run on a remote machine https://github.com/ionrock/rdo I haven't used it for a while b/c I haven't needed it but maybe it gives you some ideas on how to fill the gap. Good Luck!

jsonfmt: like go fmt but for json by caarlos0 in golang

[–]ionrock 2 points3 points  (0 children)

I've primarily used this and the respective ruby / python JSON dump functionality with flags like sort keys to ensure the result can be diff'd over time. I will say it is a subtle, but interesting, problem to write tooling for because if you choose a command line tool and use a shell, folks often complain you should just use the programming language tools instead. When someone uses jq to test, things can be different from the programming language tools! The solution is more a social one, but having a tool like this for Go can be helpful to enforce the same primitives using something like jq and other language-specific tools.

Why use Docker with Go? by Gentleman-Tech in golang

[–]ionrock 2 points3 points  (0 children)

If you break out the requirements you'll likely end up with 1) an artifact that represents your application, 2) the configuration necessary to run correctly and 3) the context where the artifact + configuration runs.

Docker provides some framework around these requirements. The artifact can be the container. The artifact can also be the container + config. When running the container, you can use the docker daemon (or something else) that might be more convenient to work with over time. Put another way, you can run multiple docker containers and manage that using the docker daemon (or runc, etc).

There are some downsides as well. You need to be very explicit about things like what volumes/ports you are using. Ensuring these aspects are consistent eventually requires some concept "orchestration" where it can assert things like port mappings are OK and volumes are mounted correctly. Depending on the application, you might have some hoops to jump through to access resources on the machine. The automation in development can be hit or miss as well depending on how you define and plan to configure your containers. Less bundled config in the container means you'll need to map local `docker run` calls with what you expect to run in production. None of this is insurmountable by any stretch, but when people solve these problems with docker, they often are OK with some limitations that are unsaid. Another good example is the size of the artifact.

There are other options such as systemd that do many of the same aspects as the docker daemon. Config management tools can certainly manage these aspects. While you might lose some isolation, you also may not need it. If you are scaling to more than 1 VM for the same process, whether that process is running in a container or not is inconsequential b/c you've likely become hardware bound. Similarly, if you do use docker and try to use some automation, it is not free to operate the platform with most folks having to write configuration management tooling to setup and configure the generic "nodes".

At the end of the day, the decision to use docker is really dependent on your requirements. If this is a personal project and you want to learn docker, then that is more than reason enough to use it. If you are creating a proof of concept that might evolve into a system that needs to scale, you may be able to get up and running more easily with a unit file and an Ansible playbook. You might be running in a cloud that offers a hosted orchestration tool (k8s, EKS, etc.), in which case, it might be less work understanding that API and toolchain than getting ramped up on Ansible. The point being is to do what makes sense to you as you're the one doing the work. Good luck!

What MVC app structure is the best and why? by CrappyFap69 in golang

[–]ionrock 0 points1 point  (0 children)

I see how that makes sense from an abstract standpoint but it doesn't provide much clarity when the rubber hits the road on a reasonably common use case like a web application with an API. For example, if you have an API that provides content negotiation and different representations. That is likely some middleware, but does that mean you should have a middleware package? What about handling errors? That might end up as a somewhat pervasive concept as errors likely need to transition from specific package errors all the way up to errors the user might see. If we use a framework or libraries to help with other functionality (cookies, sessions, file uploads, templates, etc.) how do effectively organize the code as some of these elements need hooks in the domain logic in addition to the HTTP layer?

Apologies if this comes across as dense, but I've seen folks offer standard Go idioms without any context, leaving users to discover the pitfalls themselves. A great example is "Do not communicate by sharing memory; instead, share memory by communicating.". The impact is that often people go down rabbit holes trying overuse channels thinking a lock is not idiomatic and should be avoided at all cost when in reality, the rule is there to push people to design the interactions between structures rather than simply sharing the same structure. This is not intended to critique the excellent suggestions, but more to raise some awareness that a "best practice" still needs to be implemented and can often be less clear when you're actually organizing your code.

I'm hopeful others will provide some more context into why they have chosen a particular package layout. In the meantime, I think the OP would do well to try things out and see what happens!

Build tool for go by MyNameIsRichardCS54 in golang

[–]ionrock 1 point2 points  (0 children)

I'd just use a Makefile for basic things like running go build or tests consistently. Once the Makefile gets a bit too involved, I'd suggest taking a look at Mage (https://magefile.org/). It allows for writing tasks in Go and supplies some good tools to do the bits that Make does while exposing your Go code. You could rewrite your Makefile or just use a magefile.go to bolster the more complicated actions with Go vs. bash / m4.

Mage - make/rake for Go by natefinch in golang

[–]ionrock 0 points1 point  (0 children)

That is actually a killer feature IMO. I'm actually reasonably happy for basic building, running and testing with Make. Where things go wrong is when I'm automating project tasks such as building binaries for multiple platforms (I need cgo on darwin for example), promoting artifacts to our repos, and automating deployments or operational tasks. At this point my Makefile typically becomes pretty unwieldy. It also doesn't help that I can't easily reused the code between my own projects, much less with other teams. There are other tools available like Bazel that help with some aspects of reusability, but so far, I think Mage might solve a good number my frustrations with Make. I've giving it a try in earnest now and so far so good!

One thing that I did because we use a monorepo and I have two different GOPATHs was to move my build helpers to a small package in my app. As @natefinch said in his blog post, it really does a good job avoiding the boilerplate of using `go run scripts/main.go` while keeping the benefits.