Especially when the solid core now ships with a web ui and API compatibility with OpenAI and Antropic. In my test of ai clients, Ollama was the only one I deleted.
HN user
alzoid
This was my issue with current client ecosystem. I get a .guff file. I should be able to open my AI Client of choice and File -> Open and select a .guff. Same as opening a .txt file. Alternatively, I have cloned a HF model, all AI Clients should automatically check for the HF cache folder.
The current offering have interfaces to HuggingFace or some model repo. They get you the model based on what they think your hardware can handle and save it to %user%/App Data/Local/%app name%/... (on windows). When I evaluated running locally I ended up with 3 different folders containing copies of the same model in different directory structures.
It seems like HuggingFace uses %user%/.cache/.. however, some of the apps still get the HF models and save them to their own directories.
Those features are 'fine' for a casual user who sticks with one program. It seems designed from the start to lock you into their wrapper. In the end they are all using llama cpp, comfy ui, openvino etc to abstract away the backed. Again this is fine but hiding the files from the user seems strange to me. If you're leaning on HF then why now use their own .cache?
In the end I get the latest llama.cpp releases for CUDA and SYCL and run llama-server. My best UX has been with LM Studio and AI Playground. I want to try Local AI and vLLM next. I just want control over the damn files.
Did you even listen to the speech? https://www.youtube.com/watch?v=kDMyeGQm3NA
He never trashed the US, he simply stated the facts and how middle powers should respond. Not by isolating but by working together. He directly addresses how everyone is dependant on the great powers. When the great powers stop honouring the systems and structures that are in place then the 'old way' is gone. Which it is. Relying on US commitments to NORAD, NATO, Trade Agreements etc is useless.
As far as leverage goes, we will see. But we are not divorcing we are simply responding to the US giving up its global power. The negotiating table in Washington is not reliable. It's not theatre, its risk management.
Don't feel sorry for us we will prosper.
If you watch his speech and the follow up interview you he answers that directly (https://www.youtube.com/watch?v=kDMyeGQm3NA @ 17:50). It's a good watch, better than the past 10 years of daily coverage by American media of what their dumb president and ex president is ranting about.
I am in the start up community in Canada. I can tell you that after the first threat from Trump every federal program to help tech start ups immediately pivoted to Asia and the EU. Before he started yapping, we were connected to Canadian representatives in the US, meeting about markets and opportunities. Now all programs are directed at forming partnerships elsewhere.
Java introduced Optional to remove nulls. It also introduced a bunch of things to make it behave like functional languages. You can use records for immutable data, sealed interfaces for domain states, you can switch on the sealed interface for pattern matching, use the sealed interfaces + consumers or a command pattern to remove exception handling and have errors as values.
I went through evaluating a bunch of frameworks. There was Langchain, AG2, Firebase Gen AI / Vertex / whatever Google eventually lands on, Crew AI, Microsoft's stuff etc.
It was so early in the game none of those frame works are ready. What they do under the hood when I looked wasn't a lot. I just wanted some sort of abstraction over the model apis and the ability to use the native api if the abstraction wasn't good enough. I ended up using Spring AI. Its working well for me at the moment. I dipped into the native APIS when I needed a new feature (web search).
Out of all the others Crew AI was my second choice. All of those frameworks seem parasitic. One your on the platform you are locked in. Some were open source but if you wanted to do anything useful you needed an API key and you could see that features were going to be locked behind some sort of payment.
Honestly I think you could get a lot done with one of the CLI's like Claude Code running in a VM.
I had this issue today. Gemini CLI would not read files from my directory called .stuff/ because it was in .gitignore. It then suggested running a command to read the file ....
I will also add checks to make sure the data that I get is there even though I checked 8 times already and provide loads of logging statements and error handling. Then I will go to every client that calls this API and add the same checks and error handling with the same messaging. Oh also with all those checks I'm just going to swallow the error at the entry point so you don't even know it happened at runtime unless you check the logs. That will be $1.25 please.
I feel like it was this way 10 years ago. Once r/TheDonald successfully gamed the system everyday I think people with interest took notice. Now you can be in a niche sub reddit that averages 40 comments on a post. Then a post that could be adjacent to some hot U.S. political wedge topic gets mentioned and there are 300 comments from users who never take part in the discussion. Even something very general like "students are protesting tuition hikes" the small city I live in gets posted and it gets flooded by people who never comment. If you hit a hot topic like Israel / Palestine, the Ukraine war you see it as well.
Reddit, Fackbook, Twitter, TikTok etc are the places where people get their information and form their options. That why the the wealthy and powerful are buying them outright, or paying to push their influence into every aspect of the conversation. Poisoning the well or "Flooding the zone with shit".
Reddit became what Digg was with MrBabyMan. Or actually something worse.
I asked Claude to add a debug endpoint to my hardware device that just gave memory information. It wrote 2600 lines of C that gave information about every single aspect of the system. On the one hand kind of cool. It looked at the MQTT code and the update code, the platform (esp) and generated all kinds of code. It recommended platform settings that could enable more detailed information that checked out when I looked at the docs. I ran it and it worked. On the other hand, most of the code was just duplicated over and over again ex: 3 different endpoints that gave overlapping information. About half of the code generated fake data rather than actually do anything with the system.
I rolled back and re-prompted and got something that looked good and worked. The LLMs are magic when they work well but they can throw a wrench into your system that will cost you more if you don't catch it.
I also just had a 'senior' developer tell me that a feature in one of our platforms was deprecated. This was after I saw their code which did some wonky hacky like stuff to achieve something simple. I checked the docs and said feature (URL Rewriting) was obviously not deprecated. When I asked how they knew it was deprecated they said Chat GPT told them. So now they are fixing the fix chat gpt provided.
I ran into an AI coded bug recently the generated code had a hard coded path that resolved another bug. My assumption is the coder was too lazy to find the root cause of the bug and asked the LLM to "make it like this". The LLM basically set a flag to true so the business logic seems to work. It shouldn't have got past the test but whatever.
In another code base, all the code was written with this pattern. Its like the new code changed what the old code did. I think that 'coder' kept a big context window and didn't know how to properly ask for something. There was 150 line function that only needed to be 3 lines, a 300 line function that could be done in 10 etc. There were several a sections where the LLM moved the values of a list to another list and then looped through the new list to make sure the values were in the new list. It did this over and over again.
The future is already here. Look at how companies behave today, AI will not change their behaviour. AI will not make them 'nicer'. People talk about the massive productivity change and how we need to think about Universal Basic Income. They don't realize that in the US and other western nations they are already living in abundance (even excess). How do we treat the unemployed and "Unskilled" workforce? Do they have UBI? When they complain about rent and food prices do the wealthy step in to help? Or are they told they should have went to school or acquired a better skill to deserve a better life. What will happen when AI makes while collar workers "unskilled"? The same thing that happens today.
It was my go to back when I was doing Java Desktop / Servelets / Java EE. I found it easier to use than Eclipse, which most people I knew were using. I recently did a Google AppEngine project to collect and display weather data and used Netbeans for dev and Spring for the framework. It still works well, integrates with the package managers and build tools easily enough.
Before Netbeans I was using Textpad with shortcuts mapped to javac. What I liked about Netbeans at that time (2005ish) was that you could press the Run button and your application just ran, weather it was a desktop app or a servelet web app. It reminded me of Visual Studio and the VB6 IDEs.
When the server is behind a pipe of limited size. When most of your new visits happen all at once over a short period of time. When you can't rely on a mobile phones cache like a desktop because 90% of your visitors are using one. A CDN is a easy win to off load resources, even if they are small.
1) Yes, the other benefit at the time was a browser would only do X number of requests per domain, using the CDN allowed more requests. Also it was a bandwidth issue from the server.
2) Yes. I should also mention at the time mobile browser cache was not consistent/reliable.
3) The "loader script" is a basic if(!lib.func) { do the magic }. Its one extra thing I suppose. For the overall page load there are lower hanging fruit.
In this situation server bandwidth was an issue. Using an available CDN with the fall back was what we decided to do. It's not that complicated, from the client check if the object you expect to exist in the library exists, if not load it from your server.
I do both. If you are loading a JS lib then check for its existence on the client. If it's not found load the resource from your server. You could also achieve this on the server side.
I switched to YT music and like it better than Spotify. The main thing I find is YT recommends better related music to what I am currently listening to. I found Spotify was playing the exact same songs all the time. Plus you get ad free YouTube which is a nice bonus.
I find the costs and use cases take up time to try and figure out. I wanted to prototype a IOT device pushing data to the cloud. I used Google IOT Core. After reading a bunch of tutorials I streamed the data to Big Query. I used a device to send about 1000 readings and it cost me around $150 USD. I have no idea why it cost so much. It used 1000 hours of cpu time. I find that so confusing. Why was that much CPU required for so little data? It was 5 JSON fields into a table. Did I choose the wrong thing to ingest the data? Should I use functions?
So I am going back and seeing what else is possible. I tried setting up a PostgreSQL Compute VM but then I needed another specialized instance to act as a go between for allowing access for serverless vpc access. I get charged a bit for everything. I just want to build a product and see if people want it. I have no idea what to charge because I don't understand the costs. Do I spend time figuring out the costs of every little thing that is touched or do I install something on a hosted server?
I feel like there should be out of the box setups for this stuff in Google cloud. They have so much to offer, I think tying it together in easy to use and price packages would get a lot of people using it who need to rapidly get something made.
Hire a local accountant and tax lawyer and they will tell you how. When I set up my business I had the accountant and lawyer discuss set up options. They were going through share structure etc and providing examples of how to take advantage of things to lower my taxes. I made an offhand joke about setting something up off shore and the lawyer flatly said "You need to make $xxx in revenue before that is worth while". It was somewhere around 2 - 3 Mil.
I'm not rich, that meeting cost me $1200 and the outcome was a legal document incorporating my company with all the different things we discussed.
I can not imagine what is available once you hit the 3 million mark and beyond.
No, when I read the article 'hard' seemed to equate to 'took longer than expected'. It takes time, but I think the tools that are out there are easy enough to use.
If you wrote the software you already have a good idea on how it should be tested so it's just learning how to use the tool.
The fun part is the part I said was hard, which is investigating / interpreting the results. One other thing, which you don't have to do, were setting up and coordinating multiple servers to launch the tests and automating the data processing and report generation.
I didn't say that its easy because its fun. I said load testing isn't hard - it just a lot of work. Maybe being having to do a lot of work is hard.
I don't think load testing is hard, it just requires time to do properly. Maybe some people think they can get a tool, record a script and hit play. In some cases that might be enough. Once you are concerned about performance testing, you have to do work to get it right.
I usually have a test from the 'front' of the app and separate tests developed for each component (services, dbs etc). I do load and stress testing. Stress testing is very valuable as a preventative measure. Depending on what is available I use different hardware monitoring tools to gather data. Sometimes its OS specific or a vendor tool like PRTG. On the software side I run profilers for the language the app is using.
I run focused tests - what the 'expected' use will be and general tests that hammer as much as possible.
I have found and addressed problems at all levels. Investigation is the hard part. I find it fun and you learn a lot about infrastructure configuration. Most hardware problems that show up are can usually be remedied by throwing more resources at it. Often times the cost is lower than diving into full investigation / software changes. Server configuration is another inexpensive option. It requires more investigation, if the bottleneck is the number of connections you have to determine if its: one of the many webserver settings or one of the many lower level services. I once discovered a cap on TCP connections on a low level OS service was limiting performance. After those you hit software. Modern profilers will catch most issues. I find with code network latency is the biggest offender. I had an app that took 1.5 seconds round trip. The client wanted it 500ms or less. The fix was simply being smarter with database requests and having a local cache of some data. In the end a cold request took 300ms with subsequent requests being approx 70 - 100ms.
I could go on but performance testing is a discipline like any other. It's not hard if you put in the time.
We had a vendor deliver some C# source code that was exactly this. A 'repository' interface that had a concrete class that called an abstract data access class etc. A path of 3 or 4 calls to run a SQL statement against a MSSQL Server. There were no requirement for this.
The Gang Of Four design patterns are great when you actually use them to solve the problem they were designed for. I worked on a product that grew in complexity and a factory was needed. Implementing was easy in Netbeans - right click and extract interface and provide the new implementations and the creation logic.
I'm not sure when using patterns all the time got so prevalent. As the saying goes, when all you have is a hammer, everything looks like a nail.
I feel the same way. I was writing a desktop Windows/Mac app using swing 10 years ago. The look and feel that came out of the box was fine. At first it was metal. It was a light blue with gradients to white on the buttons. Then they came out with Nimbus - I think that one was based on SVG or something similar.
No client complained about either of those. And at the end of the day you could always call a method to get the platform look and feel and it could look like Windows or Mac OS. I had a menu to change this in the app itself.
I never found the UI development hard. I was hand coding it in the beginning. I thought the Layouts were pretty straight forward (except grid bag which I never used). Eventually NetBeans had a decent UI designer and I used that.
I think the sloppy or slow UI's came from developers who never took advantage of the Observable / MVC aspects of the UI components.
I agree, I see those patterns in the wild a lot. You have a Microsoft shop using .NET and SQL Server yet the devs still abstract the data access layer. I think those patterns just became common 'just in case' they were needed. I find refactoring tools like "extract interface" take care of that so there is not need to write the abstraction until it's needed.
On the other side, I worked on a web app that supported multiple db vendors, we did the classic DAO pattern which worked well. You still get to use custom SQL for each database if you need to.
We tried an ORM at one point which worked out well. It was the same web app and we moved moved some DAO code to the Java Persistence API. We could then build the data access code and include it into our desktop (Mac Windows) and plug it in to a local DB (Derby).
In that case, once JPA was working, the pluggable database was allowing us to save on development costs.
They also had a Satellite service (Satellaview) where they delivered a 4 episode Zelda Game that could only be playing during certain hours.
https://zelda.gamepedia.com/BS_The_Legend_of_Zelda:_Ancient_...
https://en.wikipedia.org/wiki/Satellaview_games_from_The_Leg...
I did the same thing with puppeteer when I had to do a bootstrap upgrade. It was easier to generate screen shots at each breakpoint to make sure there pages looked ok.
You can compare the phones here: https://store.google.com/magazine/compare_pixel
I'm lucky enough to have 1 - 3 hours between their bed time and my bed time to work on something. At the end of the day its hard to do more work when you want to decompress / spend time with spouse, but some days I make it happen.
Select a variable and it will highlight. Press Ctrl + Shift + Up or Down Arrow to find and navigate the next occurrence
alt + ; then p to publish the current file
ctrl + k then d to format the document