SQL Server: it's not cheap, but it's genuinely good. Live query plans, clustered columnstore indices, linked servers, rich SQL features.
Tableau: more than a dashboarding tool, it's actually a really good multivariate exploratory data analysis (EDA) tool. You can use it to visualize multidimensional data easily. I do use Jupyter (seaborn, plotly) and R (ggplot2) which are good, but Tableau lets you touch your data and move stuff around in a more fluid fashion. The UI lets you really interact deeply with your data. I find that on a new dataset, I can get usable results out of Tableau faster than if were to muck around with ggplot2's syntax, even though I'm familiar with the latter. There is a learning curve for Tableau though, especially around how to structure your data for visualization (you have to think in SQL-like operations). It's not just dragging-and-dropping -- a certain mindset is required.
Active Directory: it's just there. It's pretty decent.
Visual Studio: I don't use this every day, but I do maintain a complex C# codebase from time to time (among other things), and Visual Studio (not VS Code! though I like VS Code too) is genuinely a pleasant IDE. I'm a big fan of the C# language and the integration with dev tooling is unparalleled e.g. solid refactoring, peeks, referencing, Intellisense, etc. The IDE supplies a ton of guards to help avoid human errors.
Splunk: it's good. Not the cheapest though.
Cheaper alternatives? You can roll your own logging server with fluentd and a database. Some folks will recommend elasticsearch, but we tried it and it was challenging to set up just right.
Running and managing an ELK stack is just a hassle and a managing nightmare conpared to Splunk. Humio is a great alternative, if you need something cheaper, but you have to give up a lot of features.
By far elasticsearch is the easiest distributed database to setup and scale.
Yes, it's not big. But that's all we need.
It has lots of query processing operations, sure. But it can't do (at least not easily) some things you could do with bash/grep in "traditional" settings (example, get the context between lines that match a pattern)
Splunk has a more powerful feature though “| transaction“ - often in multithreaded logs i want the context but ignoring entries not from my thread. This feature does that
Splunk is miles ahead when it comes to search and visualizations. You can just do things and join that the other tools don't support at all.
The only downside is speed, Splunk can only find a few hundreds thousands results a second so it's slow as hell when there are lots of matches. (Kibana doesn't give more than the first 500 results so it's totally cheating on that aspect).
ElasticSearch and everything built on top of it has catastrophic issues with typing. Every field is typed, say integer or string, and sending/having data in the wrong type will prevent to do operations (smaller than, greater than, sum, additional) and can crash the database. It's wild whereas Splunk can ingest and aggregate mixed data just fine.
However there is no alternative to these when it comes to search and accessibility. SSH somewhere and awk is not a real option.
The most common workarounds are for folks coming in with an Excel mindset (where operations are cell-level) who want to accomplish something that is easy in Excel but hard in Tableau. For instance, almost everything in Tableau is an aggregation, so displaying a simple unaggregated table is actually really hard (you have to make certain fields Dimensions, others Values, etc).
In Tableau, almost every operation maps to some SQL operation (in fact, you can peek at the underlying SQL query if you run the profiler), so mastery of Tableau almost always entails mastery of deep SQL concepts.
Why doesn't Tableau make easy things easy, say like Excel does? The trouble is Excel’s reactive cell level operations don't scale. Tableau lets you connect to massive backend databases to compute and display multifaceted viz's with relatively high performance, and the only way it can accomplish this is to restrict itself to SQL-friendly operations.
This difference is philosophically analogous to using for loops vs vectorized operations - the latter requires a mindset shift, and is less flexible/granular than the former but you gain a tremendous performance boost.
I have really struggled with some “easy” stuff in Tableau and gave up. But rephrasing it’s strengths and weaknesses around mindset and to think about it more like sql sounds like a good approach that I’ll try next time I meet it.
There is to my knowledge no way to automate edition of workbooks. You are in for GUI repetitive soul sucking task. Bonus pain if "workaround" are involved. (Just have a look at the support forum... well not the good time they just revamped it... many answer involve 10+ manuals GUI steps)
I still use it, overall still pretty good at what it does best. But I'm actively seeking alternative.
And as long as I don't install resharper I've found visual studio to be pretty snappier even up to a million loc solutions.
I have both VS 2019 and Rider installed, Rider is my main IDE and VS I use pretty much only for SQL Server projects.
Riders ability to seamlessly handle git branch changes vs Visual Studio choking horribly on the same is worth the (very affordable) price alone.
I was really sick of the constant slow-downs and occasional crashes in VS. Rider absolutely flies by comparison, and has been rock solid - I've only ever had a crash while testing out an EAP version. Oh, and edit-and-continue just works, whereas it's always been really flakey and slow in VS - that alone was a big productivity boost. Another thing is that JetBrains actually listen to what people want, and are constantly adding useful features that people ask for - by comparison, the VS feedback site feels utterly pointless, as Microsoft apparently ignore it, and instead only focus on adding more Azure integration (which BTW is also excellent in Rider!).
The styling takes a bit of getting used to if you've been using Visual Studio for a while, but try a different theme and give it a little time.
Rider is one of my favourite ever bits of software.
The only people are I've met that all love SAP are SAP employees living in my area, which isn't too surprising I guess.
SAP is such a pain. Our org got married to it years ago and there aren't budgets big enough to undo it. At least it's stable enough.
Oracle is another ballgame -- they're just terrible.
Pointedly: If there were organizations that reproduced their modules independently, and integrated into them well enough to "stay on one system" at the finance level until they're able to slowly pick away at replacing each one and data collections into a main db in a sane, nonconvoluted or expensive way? (Unlike SAP)
Is HN overrun by coding noobs who are pathologically handicapped in the size of their vocabulary? How the eff is 'IntelliJ' an enterprise s/w?
I can find out what’s wrong within a few seconds.
It's crazy how easy it was to setup and cover all our infra (AWS, ELB, postgresql, cassandra, kafka, haproxy, nginx, etc...). The tool paid for itself with the infra optimizations we could find in the first month of usage.
It makes me sad when I'm forced to work with graphite/prometheus/grafana in my newer company. These can't gather half the metrics and their charting capabilities are so bad in comparison.
It was also mind-blowing how things were integrated. For example. See a slow request? Click into the APM trace. Notice a service on that trace being slow? Click onto it, see what host it was running on. From there, another button pulls up all the Docker containers running on the host in that point in time. The CPU usage is visualized - and, aha! We forgot to set a CPU limit on one of those other jobs.
Debugging issues like that would've been nearly impossible otherwise, and we had more than a few cases of that.
As far as speed, I haven't had the issue with prometheus. We use recorded rules for things that benefit from being pre-computed.
I imagine the UX to be quite different by using a product.
If you're using clouds (AWS/Azure/Google). Datadog can capture all the AWS metadata automatically and merge with existing metrics, so you use instance tags and such for searching and filtering. It can also capture AWS metrics like ELB and S3 usage which are hard to get otherwise.
So you simply get all the metrics you need and get them easily (I appreciate that people who haven't worked with these probably can't fathom what they are missing out). There are defaults charts/dashboards that are quite good and available out of the box, whereas grafana is empty out of the box and you're once again forced to crawl for dashboard plugins.
Last but not least. The capabilities to search and visualize in datadog are incredible. To draw any metrics and combination of metrics in different ways and analyze usage. Prometheus can't chart shit. Grafana has limited charting and you're forced to create a dashboard to make one chart, which can't be done because don't have admin permissions.
By the way prometheus doesn't scale. It can reach 1000 or 2000 hosts top and that's the end of it. I've operated it at the limit, some operations get really slow and we had to cut down on tags and some metrics to avoid crashing.
Interesting, I haven't had this experience. I monitor the DBs and middleware you mention and the OSS plugins + OSS grafana boards worked quite out of the box. For what is worth we have around ~20 different technologies for DB and middleware.
We aren't using cloud since we have our own datacenters so there could be a big difference in usage.
As far as prometheus doesn't scale I don't know I agree. We have more than 5k hosts currently on it and is working fine. We do use some strategies like recorded queries and federation which are well documented.
The cloud does make a difference. Just seeing the daily S3 usage per bucket was life changing. Immediately found that backups were not expiring after a while as they should, costing more and more money. ^^
Do you know how many metrics you are ingesting in prometheus? storage size? and how many tags per host? We were reaching 1 TB of memory usage (mmap) on our server with 1500 hosts. Prometheus was literally grinding to a halt or crashing, was forced to cut down some metrics and stick to the absolute minimum tags.
Try prometheus_tsdb_head_series and prometheus_tsdb_storage_blocks_bytes or du command on the directory.
It give us a lot of value. We were using other solutions before (sensu/nagios) and it is night and day.
All the plugins that we use are listed in the official Prometheus website: https://prometheus.io/docs/instrumenting/exporters/ we haven't looked outside this page.
--
The cloud does make a difference. Just seeing the daily S3 usage per bucket was life changing. Immediately found that backups were not expiring after a while as they should, costing more and more money. ^^
Yeah this kind of visibility is really lacking on-prems. Storage is something that is hard, at scale, to see what is using what.
--
Do you know how many metrics you are ingesting in prometheus? storage size? and how many tags per host? We were reaching 1 TB of memory usage (mmap) on our server with 1500 hosts. Prometheus was literally grinding to a halt or crashing, was forced to cut down some metrics and stick to the absolute minimum tags.
We have around 500 GB of disk dedicated to prometheus server datacenter with a retention policy of 1 month. The VMs have around 16 GB of RAM.
I would say 95% of the hosts only have node exporter. Then 5% of the hosts will have redis/elasticsearch/postgres/mysql/etc exporters.
Also probably around 5% of the hosts have some sort of custom metrics. We have been leveraging the file exporter for writing custom service metrics.
Custom service metrics goes through a merge request process where we see the best way to structure them to avoid big cardinality. We also use recorded rules to pre-compute things that would be expensive to query (think CPU usage across a datacenter)
1 TB of RAM usage sounds insane. It looks like we can horizontally scale the prometheus servers and use some documented features for that.
For our use case it has been a very smooth ride so far!
I should probably say that my experience with datadog goes back as far as 5 years ago. Already had monitoring working perfectly back then, when prometheus didn't exist let alone the exporter plugins! So prometheus is really late and sub par to me. ^^
Looks like we got a similar amount of data in prometheus as you (1TB for 60 days) but with 40% of the hosts. Maybe you have many small VM? Got physical hosts with quad CPU (per CPU metrics) and network interfaces and stuff (couldn't tune the node exporter to ignore disabled interfaces and some useless devices). Check how many distinct timeseries you have, prometheus_tsdb_head_series.
Datadog had amazing support for custom metrics (but watch out for extra billing and cardinality!). Applications can just send metrics to localhost:1234 where the agent is listening, and they're enriched automatically with host information and environment. Magic.
This reminds me, prometheus is broken with its idea of pulling metrics, when metrics should be pushed instead. Applications and hosts have to push metrics when they come online, it's not the responsibility of the metrics storage to know about every goddamn thing running in the company and try to talk to them (can't cross firewall anyway). Prometheus worked okay enough for the last company that was on premise with fixed hosts (weeks or months to move anything physical), but it's de facto broken for the previous company that was on AWS with instances created intraday.
We disabled a lot of useless metrics in the node exporter. I think pulling works OK if you have a service discovery mechanism. We hook Prometheus to Consul.
We have a mix of very small VMs and very beefy bare metal.
That's all very interesting.
Our data lives on each datacenter only and then we query cross datacenter via grafana when we need.
We run a pair of servers both storing everything. It's the least that can be done to have any resiliency.
I would love to distribute the data, preferably per continent, but prometheus didn't have a good story on sharding. Running independent dataset is worthless in practice without the ability to aggregate. Also, the more servers the more expensive (and they're not easy to procure). Running 6 prometheus servers is in the same ballpark as paying for datadog, so might as well just pay for it.
There are a couple of articles about sharding and federation with prometheus, dunno if they existed when you tried it.
For us our problems are usually local to a datacenter. Having a dropdown where you can pick the datacenter has proven good enough. It is unlikely that we have a global issue in a service.
Sorry if unclear but we have our own datacenters, our prometheus VMs are essentially free in the grand scheme of things considering the number of compute we have.
In my experience alerting often came down to some departments trying to push some shit to some other departments. I personally avoid working in monitoring/alerting for that reason, it's just human problems and dysfunctional organizations, nothing any tool can help with.
Their pricing is pretty ridiculous at times and their sales people are often way over aggressive. You have to pay extra for containers on a host. They also make it impossible to keep users from consuming additional paid features.
I like having Datadog when I need to debug, but I'm pretty sick of the dark patterns and surprise bills. I'll probably go with Prometheus in my next greenfield.
Disclaimer: I used to work there.
I dread having to go back to Prometheus because the company is too cheap to pay for proper tooling (datadog) and developers would rather write their own time series database for their resume.
Datadog doesn't do that specific feature as well (it has alternatives), but it also has so many other features that all tie together very nicely: metrics, logging, events, very good dashboards, analysis notebooks, alerting, SLOs, performance monitoring, trace analysis, security monitoring. It's a really extensive product.
When it comes to general observability, I'm a strong believer that you need a wide range of different views – just logs aren't enough, just metrics aren't enough, etc. I've worked in a team trying to use Prometheus for everything and there was so much friction, whereas with Datadog there has always been a way to achieve something.
I think Honeycomb is a good feature that should be bought by a company like Datadog and integrated into a wider more mature feature set.
I’m somewhat familiar with monitoring/telemetry but haven’t heard that term before.
For example, if you have a log line to represent an HTTP request completing it might have a server hostname that processed it, a path, and a request duration – 3 dimensions. High dimensionality is just having lots of dimensions.
Most monitoring systems aren't great at correlating between lots of dimensions, or cost a lot if you want to high cardinality, which high dimensionality contributes to. The cardinality is how many possible options there are for all of the dimensions together (so if you have 3 paths and 2 servers, those two fields have a cardinality of 6, or 6 different places you need to store your request duration for).
When you start getting lots of dimensions and lots of values for each dimension, things start getting expensive and you have to be quite restrained about what you choose to monitor. Maybe you decide not to track duration per server because you hope your servers are roughly the same, whereas you know that URL paths perform differently much of the time.
Honeycomb's great advantage is that they support this high dimensionality/cardinality really well. Not only do they not cost a lot to do it, but they also have a really nice UI for exploring this data and how different bits correlate together, without you having to know up-front what you want to look for. Honeycomb is expensive, but not prohibitively so for some engineering teams.
I'd still recommend Datadog _first_ because it does a lot more for a little less money, but if you're pushing the boundaries of what Datadog is capable of with tracing through distributed systems then Honeycomb enables the next step.
iOS: https://apps.apple.com/us/app/datadog/id1391380318 Android (Play store): https://play.google.com/store/apps/details?id=com.datadog.ap...
Every time I want to be dismissive of the product, it's exceeded what I believed to be an extremely unlikely to meet set of expectations.
They've clearly got some pretty competent people. I'd love to draft them somehow
Beyond that, the services of namecheap Ava digital ocean. They clearly have developers who rely on the product. All the elements are there and they work well.
Azure's python libraries I find way easier than AWS's boto3, which for some reason always reminds me of dbus programming. I keep meaning to try Google's bud I haven't yet.
I also have been meaning to write one that somehow transparently uses things like rsync/scp with some partitioning strategy so you can migrate say a personal project costing you $50/month, generating you $0 and used by only a few dozen people to potentially a lot less.
(I've got numerous large scale efforts that almost nobody uses...)
I'll see if I can get a screenshot later
One issue for us with Google form is that file uploads cannot be done by non-google accounts, this works well in Airtable.
It Just Works™. Which you'd just take for granted with something as simple as MFA, but we had two previous enterprise products that were garbage. Duo just does its thing, gets out of the way, and I can keep working.
It is one of those things you appreciate because you never think about it.
there a bunch of other tools I use/love but I'm not sure they would qualify as 'enterprise', but here they are just in case:
VScode, notepad++, Agent Ransack, code compare, Dark reader chrome extension, Fork (git-client tool for MacOS),linqPad
How does LANSweeper detect devices? CDP, SNMP, etc?
It's enterprise and comes with that price tag, but the cost of it is covered by the labor hours it saves.
2) jailer. I'm a visual kind of guy. so this makes database analysis very easy.
3) onenote. if only it had Linux app i would use it for personal use.
4) visual studio 2019. customized to the bone to be uber productive
5) Autohotkey. got a ms 4000 ergonomic keyboard and binding all keys a journey in itself
I'll stop right here but i have tons of other tools i really enjoy using.
Extensions:
Roslynator
Codemaid
Productivity Power Tools - pack of extensions
_________
And maybe disable option: Reopen documents on solution load
It's in tools -> options -> projects and solutions -> general
2) snippets designer plugin. enjoy snippet creation
3) macros. crashes most of the time tho. sometimes im too lazy to pop a terminal and type my git alias so here we are.
4) disable some features to increase loading time. (lots of articles around)
there are others but these are my top 4
2) ulauncher (for linux), executor (for windows). oh how i love just typing "az 12345" and it shows my azure devops bug in chrome.
3) obs studio. when i want to force myself to focus i record myself doing the tasks and talking my way through it. give it a try
im away from my computer so this is just some of the things i remember
When you've maxed out on what you can do with spreadsheets.
Freezes and crashes are often caused by bad plugins setup by your company.
yes.
Could you please share some example usecases you implemented ?
- UltraEdit. What Photoshop is to images, UltraEdit is to text. The weird thing is, it’s not a super flashy or even immediately intuitive tool. But once you get the hang of it, it never fails to deliver.
- Excel. It’s insane the breadth of stuff you can do with it. And as a tool, it’s equally handy and “oh my God this will save me so much work” for a school teacher as it is for a data analyst and stock broker. It sort of scales infinitely, there is always one more level of complexity/usefulness to unlock.
Quote from someone that is not me and not my particular issue, but that expresses the sort of problems endemic to Excel and MS software in general:
"When data is refreshed, I get a message box "Send a Frown" at unpredictable, inconsistent intervals. For example, it will work seamlessly for five or six times then suddenly it will fail, and give this "Send a frown" message.
A normal VBA error handler does not deal with this "Send a frown" message. Not even an "On Error Resume next" deals with it. I can thus not capture or step-over the error (err) and deal with it in my code. When the "Send a frown" message appears, the entire process is on hold until I (the human) clicks on "Send a frown" or "Cancel". This is problematic since this process runs 3am in the morning on our servers for about 200 connection refreshes."
It definitely isn't fancy but it works well for larger files and things like column mode and perl regex searches are just so nice in certain cases. I'm finding it hard to put down especially since I do a lot of Perl and I haven't found a big benefit for an IDE there.
I've kept UltraEdit around for more than 20 years now. Column editing, especially back when it was introduced, saved my bacon more than a few times.
Open a 200mb horribly formatted text file. Apply some regex find-replace to remove some cruft. Let UE format it into nice columns. All seamlessly, also for huge files.
* DataDog (distributed tracing is a dream)
* IntelliJ (idea, goland, pycharm, clion, datagrip)
* MindNode (macOS-only mind-mapping software)
Recently started using smart sheets, but on the fence about this one so far.
Disclaimer: I work at Holistics.
We have had good experience with Tableau but had to do some custom Rest API programming for #1 .. Feel free to PM
The only alternatives are network shares filled with v1_v2_final_edited filenames and very expensive, SAP-level of complexity and JIRA-style approval workflows.
Unfortunately they are owned by Stratasys, the Oracle of 3D printing and the product is barely maintained. When it was acquired they made it free. It was meant to become the github (in terms of de facto standard for public repositories) of 3D CAD, and be an inroad to 3D printer / 3D printing service sales. But that aspect never took off, Stratasys is bleeding marketshare and an at any time I expect to login and see that the service is discontinued.
Getting off-topic but I'm interested to see if there are any replies:
For all software engineers reading this, I can't state how behind other engineering disciplines are compared to software. The equivalent to git or SVN or even CVS never appeared as standard practice and there is barely any middle ground between no version control whatsoever and formal change control boards (which is no version control whatsoever except at a few milestones and if you're lucky you can verify a change to the milestone by checking a paper or dvd).
Outside of software, academic spin-offs tend to start with good practices, such as markdown or latex files for documentation, which work well with version control, but never seem to make it more than 5 years before they reach a state of no control / word documents.
Electrical CAD is becoming better, with more software-background hobbyist and more open source tools arriving. It helps that design files and manufacturing files started to converge in the 80s due to early automation and thus tend to be text-based and diffable. Mechanical CAD on the other hand tends to be somewhat incompatible between vendors and binary in nature. The open source alternatives (FreeCAD and OpenSCAD) are a decade away from providing 1990s features and hobbyists have free licenses to proprietary software (eg Fusion 360) so there is very little pressure to make a good tools in the open source world.
I was honestly extremely hopeful when OnShape hit the market. Granted it was still a proprietary tool, but felt it had the tooling and integrations to bring CAD systems into the "modern era". Then they crippled their free offering, removing it's discrimination from tools like Fusion. And now with their purchase by PTC, I have no hope in it making any further waves in the CAD space.
I'm sure many people on HN have experience meeting a one-person self-taught software team in a small company that developed their own version control system called "copying folders". In mechanical CAD, half of the industry is at that level, but it's even worse because your shard libraries may be updated irreversibly and without notification when you don't intend, or not updated when you intend, depending on such factors as the order in which you loaded your projects.
I was sad enough that GrabCAD was purchased by Stratasys, but at least it's plausible that it exists for a while. I didn't know OnShape was purchased by PTC. I was also really hopeful and play around with it about once a year. It's always missing something I need, but was getting close, and some of the features they add are really innovative. They are also honest about what features are missing.
On the other hand, I still have a soft spot for Pro-E since it was my first MCAD package and to this day miss some of its parametric features (but certainly not its interface).
As for the features and suggestions, could you please writ them to https://grabcad.com/groups/grabcad-community-user-group where all the PMs and related engineers follow and improve the product.
There's definitely problems with it (its performance can be awful and require dedicated server clusters to keep it up at larger orgs), but come on let's be honest, it's a huge success story and lets orgs do things "their way" with project management and software development.
It’s all due to local configuration, some IT kiddo sees all these bells and whistles and levers to pull, so they turn them all on thinking more features is better.
In the meantime the most efficient workflow I have has six states (planning, execution, UAT, deployment, warranty, closed) and it works just fine and stays out of my way.
I think the problem with JIRA is they don't really have a sane default install, it really feels like a bag of parts and then you assemble it. Maybe 2 or 3 opinionated templates that take a process end to end would help people, that just want to get started and that stare into the configurable abyss of JIRA and go "nope just want a ticket system".
The Dashboard within Jira that we created has been really great as I have been using it along the charts it produces to communicate with my business partners. The data that we collect isn't perfect, but its good enough to construct a narrative that my business partners can grok. I have most recently used this information to help in successful pitch for a strategic re-design of our systems as well as an ambitious resourcing proposal to go along with it. Knowing how much of your time is lost to overhead allows me to plan ahead and justify the people that I need to make the redesign happen.
Jira having an API has been a real boon too. Personally I have used it with Python to mine for additional data that I need in reporting where the Jira dashboard is insufficient. I have also had my team's dedicate DevOps engineer drive all sorts of integrated work flow automation to ease the development process. My team operates within a large bureaucratic organization, so having the capability to automate all the artifacts for compliance has been a real time savings.
The integration with Confluence is awesome. It really makes managing my teams work so much easier. I love to collect meeting feedback notes in confluence and then tag the bullet points with Jira tasks that I create as follow up work. The Jira issue tables driven by JQL (Jiras Issue Query Language) are super useful when I need to create project plans that combine a mixture of content. I love just dropping in a list of all the tickets that we have outstanding.
I would not be nearly as effective w/o the combination of both tools.
Maybe the user experience can be good if the org is big enough to have 2-3 people managing JIRA full time but I'd hate to be one of those 2-3 people.
Clubhouse
Trello
JIRA does have a few technical failings. As you pointed out, its performance can be a problem. Additionally, as a normal user, I find its search lacking. If I want to find the story I worked on 6 months ago that involved adding middle name to the user table, I'm better off hunting through my commit log or my notes than using JIRA search.
I have to disagree with you on their support. But things may have changed since 10 years ago.
Aside from a couple chip vendor's IDEs (Analog Devices and Atmel, both at a previous employer), I've always used the open source stack for embedded debugging and found it adequate. Just wondering what I'm missing out on?
While there are certainly some rough edges in the OSS stack, they've been no worse than the commercial solutions I've tried. And at least in principle, I can fix issues in the OSS tooling.
Maybe the only thing to hate about Trace32 is its very clumsy UI. I'd rather use a TUI than their Motif/Qt based one.
I also am much more likely to prioritize Slack messages over email. It is just Skype with bells on, but it's still very good in it's own right.
5 years ago I encouraged team to use slack more, now I encourage to avoid it at all cost and use email
Okta - Just works, good UI
Workday - I seem to be in the minority but the clean UI + generally decent tooling allows for a decent deal to be in there
Everything I've used from Hashicorp has been good once you learn it. Vault is better than anything that came before it. Terraform is better than anything that came before it. Packer is excellent. Gonna try using consul connect for my next project. The learning curve is pretty steep on these things, but they are definitely force multipliers.
I'm also gonna say Eclipse. It seems to get a lot of hate, but I've used it so much for so long that it feels very natural. I've mostly switched to VSCode, but that is more a function of moving on to new languages that are better supported in VSCode.
It's also a pain closing as it prompts do I want to save. Saving as a CSV is a pain, it takes two prompts to save as a CSV.
File recovery is also a pain.
I still use Excel to interop with others and every time I do I find myself tearing my hair out at how painful it is to use.
I’ve helped manage both PagerDuty and OpsGenie at a certain employer, and while PagerDuty seemed to mostly kinda semi sorta work, there was a lot of klunky aspects to the system. When we switched to OpsGenie, it was like all the things we liked about PagerDuty were still present, but we didn’t have any of the pain points. Moreover, there were additional features that made it even nicer.
Imagine how good it feels when you stop banging your head against the wall, and then realize you’ve been banging your head against a wall for the past few years.
Don’t get me wrong, I love the PagerDuty guys and everything they’ve done as pioneers in this field, but I much prefer OpsGenie.
In fact, OpsGenie is such low-touch that we now have many fewer people who are involved in the day to day management of it, each team can manage the things they really care about, and the rest of us can just get on with our other work.
Importantly, PagerDuty has (as far as I know) a well deserved reputation for reliability, which is critical in that space. How is the reliability of these other providers? How have you measured it?
It was better than DokuWiki, for sure, but DokuWiki was free...
The flexibility is really great, and while I have not used other ERPs, I believe it is easier to develop for, and to use as an end-user. Part of the code is open-source, and you have access to the source of the non-free apps. As a bonus, it's Python!
Regarding the pricing, it sure is less expensive than the competitors, but the cost increases fast when you add new modules, or if you have many internal users (pricing is 100-250€ per module per year + ~250€ per internal user per year)
EDIT: a live demo with most modules installed is running at https://master.odoo.com/saas_master/demo
Mostly joking. I agree that Matlab is quite good to quickly setting up certain things and can even be quite elegant when used by someone who knows it.
I do however feel like it should not get as central of a place in education as it got at my university. I would prefer more open alternatives to be used to maybe inspire more simpler exploration by the students.
Now I use Loggly... It's okay.
IDEA's IDEs as others have mentioned.
I've built enterprise software I enjoyed using (reputation.com), does that count? :)
You can also parse the logs and create alerts and dashboards from the parsed values.
We only retained the logs for 30 days, so you could use Elastic/Kibana and we did for our dev/qa environments. However people hated it compared to Sumo.
* it breaks native keyboard shortcuts. After disabling the shortcut overrides in settings, "/" is a NOP (which is weird, since disabling the overrides worked in Confluence)
* the markup is non-standard (but I can live with it)
* sometimes it will log me out when I want to post a comment and all of what I wrote in the comment box gets lost
We had new projects and interns stuck for weeks because they couldn't figure out how to make a hello world project in Vivado (blink a led for a FPGA dev kit). There was zero doc and zero help available online because it's too niche. This was only unstuck after a while when one senior guy showed how to use it and wrote an internal 50 pages docs on how to create a project and do anything at all. Every single step is an impossible to figure out wonder.
After the initial hiccups, the IDE and the SoC SDK were abysmal. Couldn't store the software in source control because Vivado had no source control support and it was autogenerating/overwriting garbage files all over the place.
To be fair the tool was functional for routing and HDL development. It's usable professionally if you have time to learn and get trained. This may even be good by some embedded development standards (embedded consistently has really shitty development tools that other developers would never tolerate).
[0] https://github.com/xupgit/FPGA-Design-Flow-using-Vivado/tree...
[1] https://www.xilinx.com/support/university.html
[2] https://www.xilinx.com/video/hardware/getting-started-with-t...
Hello World blink an LED can be done in 10 mins flat, I'm afraid you did your intern a disservice by not giving him or her a basic intro and pointer to the docs. Do a goole search for vivado design flow and you'll see all those links I just posted. I lecture in digital design at my local university part time, and I use Vivado and in one lab students are already able to blink the LED, and much more.
I do agree the SDK side is a bit dodgy. My biggest bugbear there is project corruption partly due to being eclipse based. I understand thats been upgraded to Vitis now, but have not used that yet. Vivado is separate from that and is very sold though
We found zero documentation whatsoever on the internet. None of the things you linked to existed. Looks like it took 5 years for some tutorials to be written, and it's not even from Xilinx, it's from some guy sharing on GitHub (maybe a university).
Interns were not to blame, more experienced engineers couldn't figure a thing and there was a 3 months deadline. If it were not for one employee who tried the Zynq platform 6 months before and was trained by Xilinx, the whole thing would surely have been canned.
There was lots of issues with the platform and the IDE once got a hello world working (I really hope Xilinx fixed most of them). Basic APIs were not working or were documented wrong, the compiler had issues (modified gcc under a modified eclipse), the IDE occasionally crashed or got stuck (it called a ton of sub processes that got lost or failed).
The SoC IO pins were undocumented (needed info and identifier to do the routing), had to get private doc from Xilinx and they had typo in their pin layouts, so there was a constant risk to misconfigure a pin and fry the board (FPGA don't forgive mixing up input and output and voltage).
Now that I remember about it. The whole thing was pretty insane. ^^
My only question if I had to work on this again would be, does vivado support Git/SVN nowadays?
In 2015 vivado was pretty new, it's come a long way, so I'd give it another look. There has been a strong push as you can see to make the developer experience much better, so hopefully if you give it another chance you may come to appreciate it as much as I do.
However the software development experience is dismal overall. I doubt it will ever improve much, hardware companies just don't make good development tools.
The closest experience developers get to embedded might be android development. The IDE are good, source control, auto completion, the platform documentation is amazing, fully documented API with examples, there are entire guides on how the system work, remote debugging on the device (I've developed on Android version 1 a decade ago and it was all there). It's just great. Now try developing for a MCU and half the manufacturers can't document how to read an IO pin or use the DAC. I'm not looking forward to moving back to embedded. ^^
- Agent Ransack is a GUI for findstr. Much nicer to use than the one in Notepad++.
- VS 2019 is incredible. I weep for the parallel universe where we’re all stuck using Eclipse for everything.
Red Hat Enterprise Linux 7 is also awesome. I wish we could have 8, but that's not quite in the pipeline yet. The distro is crazy stable. With the Extras, Optionals, EPEL, etc. repositories enabled you get access to almost all of the best software in the Linux ecosystem.
Ansible, particularly Red Hat Ansible Engine, is also amazing for managing all of my Red Hat servers. I couldn't imagine doing half of my job by hand, as nothing would ever really get done. With Ansible you just fire off a playbook and relax.
I can list gripes for days, and I wish thunderbird would integrate with all the features of exchange better, but I don't know how anyone gets by work with webmail. I feel such a lack of control in my personal gmail box.
Do you mean Enterprise Resources Planning systems like SAP R/3 v. Oracle Applications?
Beyond it's shortcomings it's something I'd gladly pay for (if I needed it of course) because it can't really be replaced by something free / opensource.
dynatrace - expensive as hell, but really really useful for large organisations if you are operating your own software and depend on its functionality - read: financial biz etc.
- Hashicorp Vault (secret management)
- Duo Security (2FA)
- StrongDM (Database authentication and auditing)
Both have excellent UIs and they are truly powerful.
Avoid any Graffana based solutions, the only good thing I can say about them is that they are free.
It was just better than the regular ssh client.
Really worth it's price, if anything because you can create a set of sessions and share them with all your colleagues.
DbVisualizer -> best GUI for databases, you learn it well and use for all databases
Editpad -> fastest text editor I’ve ever seen with bunch of useful features and terrific regex (see regexbuddy from the same author)
I find Teams to be incredibly bad. It's slow, it literally has a typing lag to the point where you type something, press enter to send and then start another message, letters get eaten and sent with previous message. It eats more ram than JetBrains IDE at this point. It has a very bad UX, a lot of (slow) tab switching, pictures do not even load for me most of the time(unless restarted), sometimes it takes up to 10 seconds to mark something as read on the 'Activity' tab which is even more annoying. Insanely bad custom notification system instead of using built in Windows notifications. Add to that terrible API, weird flow of adding apps to conversations and few more things. It grew to become my most hated application that I have to use every day.
Is the absence of a Kanban board a deal breaker? Perhaps for management.
So is JIRA.
> JIRA is a surveillance and control mechanism for senior executives.
Never saw it being used like that, though I see how it could be abused.
> It just depends on the size of your company.
The culture probably more than the size.
And we all get crushed under that weight.
I so much prefer Jira.
Who works on this software? Who wants to go to an interview with "workflow and usability lead on service now, 5 years" on their CV!
Sure, it can suck so incredibly bad. But it can be really good too, depending on who built it up.
But I agree that the URLs are terrible, it's slow, and it's too easy to lose things along the way. Especially custom things
I say this as someone whose job is to help manage my company's sn instance and clean up the utter shite left behind by our predecessors
Second best: Office 365
Good query language (rollup,piping,stats,etc...),visualization and rich function set (eval and stats functions in splunk) is a minimum requirement for me. Tried Kibana,Graylog,Sentinel and a few others I can't mention here.
They work really well
No intergration with something like Jira, no support for pull-requests/merge-request, navigation is pretty terrible.
The problem may have been that we where only allowed to use the Git part.
It'd be interesting to ask "what is the best enterprise software you use that is ONLY sold to enterprise customers and never to individuals" as there's more pressure on such software not to be usable.
There are literally 20-40 serious bugs that impact me daily.
Eg installing and running the Lombok extension is a one-liner. I fought for about an hour trying to do the same on Eclipse.
I'm sure VS chugs power like IntelliJ too
Yes, but VSCode offers a lot of the functionality for a lot of the programming languages/frameworks OP mentioned he uses IntelliJ for. HTML, JS, CSS, Vue, Node, Python are all perfectly useable in VSCode. For stuff like Java and maybe SQL the full version of Visual Studio would be a fair comparison since VSCode's options for that aren't that amazing (imho).
That's obviously a process issue to an extent, but there is only so much time I want to spend messing about with this stuff, and if an IDE doesn't have me fighting admin rights every minute, I'll go with that one.
I then moved to booting with an external Samsung T5 SSD drive straight into Linux and running Windows in VMs.
I still need the primary Windows for when I need to join the domain.
Wouldn't be surprised if there are issues with older versions though like VS2010 or before.
VSC won't do this to the same extent.
Inverted indexes are slow to create, but fast to query.
There are two main variants of inverted indexes: A record-level inverted index (or inverted file index or just inverted file) contains a list of references to documents for each word. A word-level inverted index (or full inverted index or inverted list) additionally contains the positions of each word within a document.
TL;DR, for every (key)word, list its file and position. A smart IDE implementation would also need to take file rename and move into account, and translate byte positions to line numbers for quick jump-to-file.
https://intellij-support.jetbrains.com/hc/en-us/community/po...
https://intellij-support.jetbrains.com/hc/en-us/community/po...
On top of that I've tried running code cleanup on the whole solution and it introduced bugs - I have an Image class in the project but it imported System.Drawing instead and prefixed the Image with some nonsense that didn't compile.
I think I'll stick to waiting here and there for the rusty Visual Studio 2019 rather than cleanup Rider's shit every commit
Nevertheless I still think Intellij is an awesome piece of software and I still start it sometimes to get useful features which are not available in Metals, like inline type annotations for long method chains (really useful when coding with Cats) or "show implicit hints" to see which implicits are used / missing and where.)
I never could get ensime to work, but I should try metals.
Give Metals a try! Following the instructions in the docs is enough to get a good working environment.
Its suggestions stuff is nice, and it works reasonably well. In particular it supports multiple languages much better than Eclipse's motley range of plugins. So I can see why your list of uses makes it the superior option there.
But for primarily Java development, which is where I encounter it and the most vocal love for it, it lacks a couple of key features (or non-obvious configuration to enable them I guess?)
* You can't run code unless the whole project compiles (poor for quick sanity check, test driven development, and refactoring breaking changes).
* You don't get the "problems" view of compilation issues (and optionally analysis output like findbugs) so as often as not I'll try to run a test, building the whole shebang, when the end result will be needing to fix a trivial syntax error. Eclipse tells me that first.
* It's a pain to use when working with multiple (source independent) projects simultaneously. E.g. a library project and the main project. Eclipse lets you open anything you want to in the same window and presents them in the same explorer view.
It also, anecdotally, feels slower than Eclipse, and seems to enjoy popping up focus-stealing windows more often than Eclipse (though I guess I can cuss Gnome just as much for that one).
I don't hate it, but I do miss Eclipse.
Edit: I should add that it supports Gradle rather better than Eclipse does, but since I really dislike Gradle I'm not sure how much of a plus that is!
So I was slightly incorrect in that there seems to have been a name change at the same time (as I say, I'm not an Android dev, so I didn't know that).
I was definitely seeing IntelliJ in use, and hearing a lot of praise for it circa 2011 - 2013, so it does look to me like the love for it precedes the Android dev environment switch.
What do you mean by _running_ specific parts of the code? Isn't this a language problem (compile all dependencies (classes) to byte code, package .class files in jar files, define the main class, define the classpath, and then run)?
Some devs really like this. I never really encounter it as a problem because for any refactoring, I prefer to use IntelliJ's refactoring tools that ensure all code (that's in your project at least) gets rewritten in the same moment the refactoring occurs.
That's the same as Eclipse (e.g. rename method), right? What's the benefit of IntelliJ here?
(Edit: Some of the IntelliJ operations are distinctly superior to the Eclipse ones. But not all. In my experience I'd say they're about even here.)
For example, in Eclipse it's trivial to take an inner class and move it to its own file. In IntelliJ that doesn't seem to be an option.
And that's a breaking change if I do it manually, which is where the Problems panel is so useful.
Not forgetting TDD where in Eclipse I can write multiple tests for a feature before any code exists and run them before the unit I'm testing even fully compiles!
For example, in this screenshot one of the methods the test class invokes doesn't exist: https://paperstack.com/img/ides/eclipse_run_broken_code.png
2. For non-static class: Refactor > Move Inner Class to Upper Level
Then you can select class name and parameter name of formerly enclosing class.
Still, when a refactoring operation doesn't exist for a code change (even if it's due to operator ignorance) it's nice to have the Problems pane to tidy up with.
That's a common confusion about IntelliJ.
Eclipse Workspace -> IntelliJ Project
Eclipse Project -> IntelliJ Module
In IntelliJ create an empty Project and import all your Maven or Gradle projects as Modules. Everything in one window :)
Edit: Ok, report.
It's... close enough. I don't really like the need to create a new project to contain the "IntelliJ droppings" :) but honestly that's not that different from Eclipse's workspace directories.
Thanks for the tip!
Take a look at this comparison: https://paperstack.com/img/ides/eclipse_vs_idea_problems.png
In IntelliJ I can invoke this gizmo for the file I'm in, but it reports the problems for that file. It doesn't tell me where else the problems are. If I do a build I typically get a handful of compilation errors until the build gives up.
In Eclipse, by default, I get the Problems view. It lists all the compilation issues it knows about in the entire project(s).
Because Eclipse does incremental compilation I get to know about issues in a totally different file immediately. I also see stuff like config file errors in the same panel. It's really neat.
IntelliJ may have this feature somewhere, but this doesn't seem to be it.
I find this tool very very useful when you have lots of integration job. If you have an enterprise version, then you can do stuff like compare and merge files across two servers, compare PDFs, ZIPs, JAR, and obviously plain text files. This is a tool for which I definitely ask for an Enterprise Version license whenever I join a new organization.
the ability to compare and merge directories is also nice (although a number of open source diff and merge tools also support this -- e.g. kdiff3, meld)
I simply bought myself a license and use it on both the company and personal machines.
My personal favorite is the Git mergetool integration with gives me a three-way merge (with the common ancestor). This is absolutely indispensable when trying to do complex merging and has saved me countless hours.
Otherwise the free edition has a number of missing things and it's blocking the installation of plugins that could somewhat compensate.
so happy to see jetbrains receive some love here.
Example: Python plugin when installed in IntelliJ is missing venv integration in the terminal.
I always feel a bit silly, because I pay for their "all products" pack, but only really use IntelliJ, because I bought it before realizing the plugins really were 99% the same as the specialized IDEs in most cases (CLion isn't, I think). At this point it's cheaper to just pay the ongoing renewal fee, I think.
For saas, probably Workday. I really enjoy it compared to what we had used prior.
Check out Onivim 2 as well for a VSCode like editor that natively uses Vim, but can use VSCode plugins and is generally easier to use than Vim. It also isn't built on Electron so it's super fast and lightweight. Currently it's in beta I think.
Essentially, to me it's all about ergonomics of editing. Hands straight on the "home row" of the keyboard, and with modal editing, almost everything is a single keypress away. To me, this feels a lot faster and easier than reaching for the mouse (or arrow keys) every five seconds, and I get the additional benefit that my core editing commands stay consistent across different environments (where I have a Vim plugin, that is). I leave all the fancier, IDE-specific stuff (e.g. refactoring, etc) on their default IDE bindings, and learn them. It's a good compromise, I'm not sure why people don't like it.
Your experience mirrors mine in that most of the benefit of vim is in the basic motions and modal way of editing, which most of the plugins provide in a decent enough way for me.
...no
Just because Microsoft wrote it doesn't make it enterprise