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

What would be the equivalent in software engineering? Loosing your domain name?


When using AWS for anything, pray for the health of us-east-01. When that region has problems the whole internet quakes with fear. You never know what's going to break.


I'm shocked at how true this is. A huge amount of software is only redundant by being hosted in mutiple parts of aws us east.


That's the funny part. It is spread around 'US East'. If anything catastrophic (or mundane) knocks out power/internet in that region it won't matter how many backups you have. It will bring down large parts of the internet.


That seems to indicate a problem with the decision making behind putting important things in only one region.


I'm happy if it goes down , nice excuse to not get any work done that day


I hear "bus factor" bandied about.

https://en.m.wikipedia.org/wiki/Bus_factor


Prod database on a single server with a single drive


...with no backups.


And stored under the developer's desk.


A CEO once got up on stage to announce an important new phone to the world's assembled press not knowing that the picture on the screen of the phone was coming from a PC in a bedroom closet and the developers were sweating like dogs as they watched the broadcast on the BBC. I shall say no more.


with the power button lined up with where their shoe rests.


Without reliable restores.

FIFY


What part of "with no backups" didn't you understand?

:-)


Perhaps the part where "having backups which are unreliable/unrestorable" is _more_ dangerous than "being known to have no backups", because the former provides a false sense of security?


"Good companies test their backups. Great companies test their restores."

Learned that lesson the hard way a few decades ago.


Who needs backup when you just rsync every 10 minutes?


Rsync?

MTBF on a WD Green is 1M hours, we’ll replace it at 900K and be golden…


An interesting question, what in software causes catastrophic issues when it's broke, but also designed as it should, like the Jesus nut is for a helicopter?

Obviously many systems have a single point of failure, and can result in lost productivity, but is that designed as it should, or cause catastrophic results like a helicopter crash?


Load balancer? Cluster coordinator? STONITH device


BGP


Jesus Undersea Cable?


OT: that's how i recognise French people anywhere ;) only one o for "losing"


Huh? That's an idiomatic error typical of native speakers. People who learn English as a second language tend to do much better on the "loose-lose" and "there-their-they're" kinds of errors


> People who learn English as a second language tend to do much better on the "loose-lose" and "there-their-they're" kinds of errors

This sounds logical, but I am not sure about it. I certainly make much much more errors based on similar sounding words in English than on my native language. (I believe I make a TON of such errors in English, and almost none in my native language, but hard to tell.)


I can confirm that as a non native English speaker I don't make this kind of mistake often. I think spelling is easier for me because I first learned how the word is spelled and only later how to actually pronounce it? And i separate homonyms like they're/their in my head because they're very different words in my language.


For what it's worth, in my experience the GP's comment rings true. I don't see many native English speakers making that mistake, and I do see lots of native French speakers making it.


Idiomatic error is "would of"


haha good catch


DNS


Encrypting your data at rest and losing the key.


Beside legacy code, in what context would you start a new project un java?


I'm building a webapp backend in Python right now and the ecosystem compared to Java is just horrendous.

* Maven (or at the very least transitive dependency management) is a defacto standard. While some solutions exist such as Poetry, there is no such as thing as a centralized repository with POMs that tell you all the related dependencies easily. And managing virtual environments feels like a huge step backward.

* I ended up using FastAPI + Dependency Injector for the Python project, and while great, it is less robust, less well documented than things like Spring + JAX-RS

* Because Python sucks at multithreading and is slow, everyone has a bunch of C in their libraries, so when there is a bug (which there will always be), it's very hard to debug. In Java land I can easily step through any code, including the JVM.

* Lack of typing metadata - even relatively new libraries like the OpenAI client lack typing information, leaving you guessing about what data is available to work with.

* SQL Alchemy is vastly inferior to Java ORM solutions IMO (no, I don't want to discuss ORMs...)

* IDE support is still relatively primitive for pytest. Until a couple weeks ago, you couldn't see the output of all your tests in the VS Code console log until it was done executing. Or when you get an error, you can't just click on the stack trace to go to the failing line.

* Lack of autogenerated API documentation, e.g. equivalent of Javadoc

Love the Python syntax, but I still feel like I was more productive in Java for writing webapps. YMMV


The bad news is the initial build is peak of the experience with Python - it's all downhill after that, since Python and other dynamic languages are mainly optimised for code creation rather than code maintenance.

It's fascinating just observing at a higher level our different systems and what makes it through as bugs after all testing, code review etc is done.

Java - null pointers are the main thing.

Python - it's a dogs breakfast. Latest bug was someone forgetting a comma in a list of strings since ['foo' 'bar'] is valid. But all kinds of crazy stuff - kwargs everywhere with people putting invalid values or types in. Straight up incorrect numbers of args going into functions which our linters don't notice for some reason. Refactoring anything widely used is a highly risky endeavour. Even with type hinting across all the exposed interfaces, Python is like a sieve for bugs, they just fall straight through. Once you get a complicated enough system, you just have to rely on total test coverage (ideally integration / end to end) or just letting your users find the bugs.


Having coded in both Python and Java I have to agree with your assessment. The things that people criticise Java for tend to be things that make sense when thinking about scripting or small programs, but as things scale up, being pedantic can be a benefit. I'd rather inherit 100k lines of Java than Python, that's for sure.


If you want to be productive in Python writing web apps you really should consider Django + django-ninja + PyCharm.


These are issues that I fear I will have moving from C#/.NET to Python. I know there are libraries like Pydantic for typing, but I think the tooling around C# is going to be tough to lose. That being said, the syntax and libraries are a huge draw for using Python.


Wait until you hit the terrible performance of Python. C#/.NET will outperform Python every single day.


Any system that requires scale and performance and in-depth monitoring. The one thing about Java that most people miss is the javaagent based instrumentation that is exemplary. So when you’re in trouble you always have jconsole . There’s an excellent APM that we use called glowroot which is open source.

Also what all others have mentioned below.


I would still pick Java any day over the vast majority of languages. Gigantic ecosystem, gigantic community, gigantic knowledge base, solid IDEs, and the list goes on.


World class garbage collectors. Well polished concurrency story (which gets a lot better with Java 21). Amazing JIT. Humongous mature ecosystem, larger than most languages. And the language (as of late) has been rapidly evolving to pick up new features and a trimmer runtime.


You had me after the first three words


"world class garbage" ?


Yep, and Java's the man for the job


High performance, typesafe code that can be maintained by a large team. Also has a very well established ecosystem of libraries, and multiple languages to choose from (Java, Scala, Kotlin, Clojure, etc)


Projects where you need mature boring technology so that you can focus on building your product.


When your CV already has enough shiny new stuff in it, and you just want to get the product built on a stable, future-proof platform.


Any project in which you don't want to be obsolete in 6 months.


When your engineering team is experienced and proficient in Java and your organization has built substantial tooling to support it.


what kind of tooling?


Any tooling you could imagine for a language java has that + 10 other implementations. Static analysis, debuggers, profilers, telemetry integration, metrics integration, etc. And these are GOOD. Java tooling, because it's pretty old at this point, is fairly well polished.


lots of java shops have loads of internal libraries that solve organizational goals or interface with other internal systems. they will continue to build new projects in java because the cost of tossing all that out is high.


When you agree that Scala's adoption is stagnant and Kotlin's advantage over JDK21 is moderate.


in retrospect, do they both seem to have been test scenarios for features subsequently picked up by Java?


JVM has the largest and highest quality ecosystem of libraries of any platform.


When you work in a company that requires reliable software


I'd pick Java any day for a new project.

It's mature and absurdly stable, both the language and the ecosystem; the tooling is best in class, and a lot of the awkward chafing points are going away to the point where the language is pretty pleasant to work with...

It isn't an exciting language. It's boring, it's the last to get new cool features, and that's by design. It also never breaks. There's extremely rarely any library churn or surprises. You can spend all the time working instead of putting out fires caused by the ecosystem.


That’s a wrong question to ask. The proper one is the reverse I believe, why would I throw away one of the top 3 languages for a likely much smaller one with barely-existing ecosystem and questionable benefits?


[flagged]


Please don't post flamebait. We're trying for something else here.

https://news.ycombinator.com/newsguidelines.html


Ever heard of Android? It's not JVM per se (it's ART), but given your comment I'm pretty convinced that you don't know the difference anyway.

I would take JVM every day instead of those crappy web-based ElectronJS apps.


Official Android language is Kotlin though.


Kotlin is an official language, albeit the "preferred" language. Java is still very much supported and viable (outside of Compose).


OK, preferred language. I don't think that changes the validity of the point I was making.


Boomers are in their 70s. They're not everyone who is older than you.


Python is actually ~5 years older than Java.


> Boomers are in their 70s.

59-77, this year, by the usual definition.


Boomers born 20 years after WWII? I feel this is Gen X erasure. I barely count as Gen X and I'm almost 50.


> Boomers born 20 years after WWII?

Not quite 20, the usual years for Boomers are 1946-1964.

> I barely count as Gen X and I'm almost 50

Gen X is 1965-1980, if you were 50 (I am) you’d be in the latter half of Gen X. If you are merely “almost 50” you're late enough, or nearly so, to be counted in the Xennial / Oregon Trail subgeneration at the cusp of Gen X and Millenial (usually counted as starting somewhere 1975 and 1977.)


  Location: Montreal, Canada
  Remote: Yes
  Willing to relocate: Not until April 2024
  Technologies: Azure, Python, Pandas, AzML, Ray, Kubernetes, FastAPI, MLOps, DevOps, Backend
  Resume: pierrevalentin.org
  Email: pievalentin.hn (at) fastmail.com
  LinkedIn: linkedin.com/in/pierre-valentin/
  GitHub: github.com/pievalentin
Hello I am Pierre, I am Backend/MLOps engineer working in FinTech with 5 year of experience. Previously at small startup (ElementAI) and sp500 (ServiceNow), I am currently the engineer supporting a team of 4 applied scientist to ship their model to our investor teams. I handle all our deployment and also software engineering to ship our alpha the quickest and safest way. I am open for remote position (Salaried or Freelance) where I could apply my MLOps or Python Backend knowledge. For further details, we can chat by email. I look forward to knowing how I can help your business and team!


I will soon have my Canadian passport. Is the TN visa really easy to get at the border?


You need to be applying to work in one of the NAFTA-listed occupations and have the appropriate qualifications (generally, a related degree). If do, it's generally easy. It's also usually handled by the employer's immigration attorney.


The main annoying thing is Teams has no markdown support. What they call markdown support is still a broken "wysiwyg"


The worst about teams is that they still haven't implemented a corrected markdown editor. Its a pain to copy code into it


What is even worse is that when you copy code from it it might introduce no break spaces that wont show upp in a code diff but e.g. break your server config.


How can a professional chef end up on HN? I am curious. Did you turn into a dev later in life?


More of a superuser than a hacker. General interest in technology my whole life. Still a chef.


Chefs are most definitely hackers, just operating in a different medium.


Absolutely. And not just hackers, they're also, literally, makers.


Isn't stage mode the main star of the show? It looks like the first baby step to have an actual desktop environment on the ipad.


Mandatory: Not your key, not your coins


The joys of being your own bank, your own cybersecurity department, your own investment broker and several other professions. All for free now, instead of the filthy money salary. Truly revolutionary, few understand :)


True, but the market as a whole often responds to these situations.


By this logic you shouldn't put your money in a bank either.

(I'm not justifying Celsius, just saying there are plenty of 'bank' like places to store your crypto)


Bank deposits are insured by law. In the US this is called FDIC and guarantees that your deposits up to $250k will be repaid whatever happens to the bank.

Which crypto exchanges can promise the same? None of them because they're not banks, even if they put up a fancy website that looks awfully bank-like to retail customers.


A crypto wallet isn't 'insured' either so this point doesn't matter.


It does matter: FDIC insurance protects you as a depositor specifically from counterparty risk, i.e., the risk that your bank may become insolvent and fail to honor your withdrawals. But in the crypto world, if you move your crypto off an exchange (your counterparty) and onto your private wallet, then you've eliminated your counterparty risk by eliminating your counterparty.

Obviously handling your own crypto custody in a private wallet means you're taking on a whole different set of risks. But the key feature of deposit insurance is that it mitigates a risk factor that's both 1) opaque to you, and 2) outside your ability to directly influence. And these are properties many crypto-aligned folks care about.


Diversify. Keep some on an exchange, keep some yourself. There is risk either way and neither are insured.


Sure, that seems like sensible advice for the median case. All I'm saying is that these risk baskets are qualitatively different, and therefore the correct allocation between custody strategies might be very different across different people and use cases.


It does. When coinbase goes bankrupt, they can liquidate all user assets. User assets at banks are insured up to 250k.

Why should I take the risk of a company going bankrupt and liquidating my funds when I can keep the money in my house (wallet)?


Because there's risk in keeping it yourself. Either you lose the keys or you get hacked and they're stolen. The insurance situation is the same either way.


The risk calculation is very different. Cryptocurrency is protected by passwords and keys and stuff so is secure from theft without needing a bank. But cash is not, so a bank does provide value - you're more likely to be robbed than the bank go under.

And of course, in most places, banks and other institutions are protected with rules about keeping a certain amount of cash on hand and some sort of insurance mandated by the government.


The federal government guarantees the banks. No one is guaranteeing Celsius.


Fed gov doesn't guarantee your wallet if you lose it.


Crypto in Wallet is equivalent to physical cash. If you lose it (cash or wallet) no one will guarantee anything.

However, you can deposit cash in FDIC insured bank accounts. Question is what's the equivalent of a bank deposit in the crypto world?


Well... ask a Great Depression survivor how they feel about banks. I have met many that won't put a dime in a bank.


Fifty years from now:

"Grandpa lived through the Great Crypto Frenzy. He lost all his savings in the Coinbase bankruptcy of 2023. Still doesn't trust digital money."


And the Depression was the driving force that brought about massive bank regulation (notable the 1933 Banking Act), including the FDIC which is what everyone is talking about here.

Those regulations simply don't exist (yet) for crypto. They may be coming, but as of right now if you hold crypto in an exchange, it can evaporate if the exchange goes belly up.


All of the existing regulation WILL NOT make a bit of difference if everybody wants their money out of the bank at the same time. If you have been watching the half dozen nations going through high/hyper inflation, withdrawal is the first service to be discontinued at signs of trouble.


No, but it guarantees we're insured up to $250,000. It won't disappear, we just won't be able to withdraw it immediately. That's admittedly not ideal, but it's better than losing it entirely. In the case of most/all crypto exchanges, no such protections exist. If they go under, you lose your holdings with no recourse for having them returned. This is all US-specific, of course.


FDIC insurance was added partway through the Great Depression. So yes, people lost money, but that’s because the current system didn’t exist.

Also, good luck finding someone who lived during the Great Depression and carried a bank balance at the time. They’d have to be 100+ years old!


I mean, people who had assets in banks to lose would probably be in their 20-30s at least during the 1930s. It’s hard to find many people that age now but I agree that in the 90s you could .


Ok, banks are not very good (emphasis on the word "very"). So then why does tokenbros want to replace them with a worse system?


Yep can confirm. If I had a Canadian passport, I would have no reason to stick to freezing Canada.


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

Search: