HN user

peelle

45 karma

Perl.

Posts0
Comments63
View on HN
No posts found.

For the people I work with, I'd say no to writing more efficient code, and maybe to using more advanced algorithms. I say maybe only because they'll just ask an LLM to make it more memory efficient. Which in theory will cause the LLM to choose a more advanced DS. But I don't have a lot of faith that the LLM will get said DS right all the time.

I work with dynamic language developers. Perl, React, Python and so on. Most currently don't care about memory usage. Some devs are actively wasteful. Usually in the name of code clarity or speed of delivery.

I'll tell you why I won't choose it as a solo dev.

Back when I was still young and impressionable, I had several frustrating experiences with it at university. Most due to my inexperience, a few times due to Windows being Windows. Also, back then the various $$ and time costs. IIRC $125+ for a windows DVD, $150+ for a VS.Net install DVD, and higher hosting prices for Windows. Also, installs and updates OS, .NET, etc were frequent and time consuming. When I'm making $2.50/hr + tips to get by I couldn't afford that kinda investment.

Now, most of my career has been using Linux, and a variety of interpreted languages. I'm comfortable with them. I boot my Windows partition maybe 2 times a year. There would be a huge cost for me to completely transition to .NET.

In order to get me to try it now would require you to show me some set of features that make it a much better choice than what I currently know. For example, if I someday choose to do Windows apps.

I disagree with this, but I understand where it's coming from. I think you have a form of whiplash from things like: - Novices overusing the new shiny. - Java/C++/etc Jr programmers overusing design patterns. - Perl programmers solving everything with regexes. - Small startups with GraphQL, or any other large enterprise tool. - Metaprogramming, Maco's, Dependency injection, Recursion, etc when a simpler solution is a better fit.

IMHO, a "best codebase" will be just a bit more advanced than I am, with good resources for me to grok it. I want to be able to learn from it. I also don't want to be so far out of my depth that I can't make a reasonable contribution.

I work with a client that has us ssh in. We are committing on branches, and they are linked to testing subdomains. So there is some safety. In theory you can spin up a local copy. Almost no one does it. Between the micro services, needing to copy multiple SQL schemas, and seed it with test data, there are a lot of hurdles with little reward.

For my personal sites, one is just a scp, into a subdir. If everything looks good, I just mv it to overwrite live. The other I just restart the process. There's nothing "mission critical" on it.

Around 2010 the company I worked for had a pay freeze. Most employees worked in the office, but about 1/4 worked remote. About three years later the freeze was lifted. The in office employees were notified about said policy change and got raises shortly thereafter. Us remote employees didn't know about the change until almost 2 years later. After an in office employee mentioned it to one of us.

When we brought it up to management they were apologetic, and said they forgot. I work for a small company that wasn't particularly organized so it's possible they forgot but still. :(

TL;DR; If you take the pay cut, check in every few months with both management and others at your level.

Stop giving your employer free labor. It sounds like you're on your way to burnout, and your misplacing some of your frustration onto the Jr devs.

Let me ask you this: What $$ will the current level of work be acceptable? My guess is that it's well above what your employer is willing to pay.

I'd suggest you do what your Jr peels do + 10%, that'll fulfill the requirement for bump & bonus. Also spend some time building relationships. If your manager mentions you no longer doing XYZ, show off your +10%. Politely and tactfully deflect if he tries to press the issue.

To answer your fairness question directly the system sounds inefficient and currently not fair. I think it could be fair(for whatever that means), given the right environment, and attitudes.

My kids came with manuals. Every new baby in Taiwan does. We also got a manual for the pregnancy. Very useful.

I know that one of the public health orgs in Australia has something similar. You should be able to google for it. It was a mostly no nonsense PDF with bullet points outlining the what and when, divided by an age range the milestone expected to happen during.

While I agree businesses have to mitigate against bots and hacking, I'd like to push back a bit. I'm an American living abroad. I have the same types of issues as OP, even with my reliable internet. The current methods of mitigation vary from annoying to outright discriminatory.

One example is that my home state's IRS portal(along with all the other state gov sites) straight up block access from the overseas democracy I live in. I assume they block almost all overseas access but I haven't tried to verify it. Like OP, I need to use a SOCKS proxy, or VPN to bypass this heavy handed tactic. While I'd love for it to not be so, Americans living abroad still have to file their taxes. An NPR article said there's probably close to 5 million of us expats.

Lastly with the Cloud VMs, it doesn't seem that this sort of ban is evenly distributed. I've proxied/tunneled through Linode, a well known Torrent VPN, and Digital Ocean, without raising any red flags, but Amazon, ViperVPN, and NordVPN have been flagged. I could go on and argue that with the learn to code movement I could see a cloud instance being the new geocities homepage, but that may never come to pass.

Some of the comments below are talking about how to successfully argue against the move. Does your company have some history you can point out? We've had enough of these type guys and their failed space ship projects that any proposal for a language shift, or major framework adoption is viewed with skepticism first.

We've dealt with "new guy wants to overhaul ..." scenario. When I joined this company we were a C++ shop with some Perl and bash. Multiple new recruits successfully lobbied to implement refactors, or new projects in a hot language/framework. Several of the refactors were a huge waste of resources that either didn't come to fruition, or were only partially successful.

Now, we are a Perl shop with active development in 3 other languages(not counting front end), and we're maintaining legacy apps in an additional 4 languages. And we've deprecated apps in at least 3 additional languages.

I guess I should be thankful none of them have lobbied for switching databases. :-O On any given year, we average 3-4 programmers and 2-4 contractors(mostly front end) Two of us have been there 15+ years, but the other full timers seem to move on around the three year mark. Because of that all the hot shots have left. When a major bug is discovered in their code it can take a long time to fix, and any breakage due to upgrades is quite a hassle since those of us left aren't experts at every language we have to maintain.

Also, what's up with people asking this question in the first conversation?

At least here in the USA, there's a lot of advice about deflecting that question. Things like, countering with "What are your pay ranges?", or "Let's wait to negotiate the salary until we're sure we're a good fit." and so on.

I believe the common reasoning that they ask early is to cut out overpriced developers. When a company gets lots of applicants this probably makes sense to them. I think generally, if you're a good fit they'll go a little above their max pay to try and bring you in.

If I understand right you are saying that the # of symbols Perl employs makes it hard to understand or read, correct?

TL;DR; I would say that you assertion is context sensitive. - For a junior Perl programmer or an outside expert those symbols are stumbling blocks. - For an intermediate Perl programmer and up, those symbols are tools that make the code more readable and expressive.

I got two ways of looking at that. First, I would look at Perl in the context of language. It is a more context sensitive language than some of it's close competitors. When you understand those \ $ % @ & sigils you gain the ability to know at a glance the context in which data is being used. Understanding @_, $_, allows you to write shorter code without sacrificing meaning. Part of the Perl philosophy is TIMTOWTDI. Most of those special variables also have an English equivalent. Instead of using $) which I never remember I can use $EGID, or if I think that's not explicit enough then I can use $EFFECTIVE_GROUP_ID to really spell it out.

The second way is that Perl has a steeper learning curve than it's close competitors. I see this like comparing Vim to Notepad++ and Emacs, or Haskell to well most other functional programming languages. Just because it took longer to learn, that doesn't mean it's better or worse at creating good code. It does mean that armchair pundits are less likely to be correct in their hot takes. They lack experience and understanding.

This is something I plan to start writing about. There isn't enough intermediate and advanced material. I've also ran into too many "senior" programmers that not only lack some of the topics you mentioned, but also fail to grasp the importance of structural things that would improve overall code quality.

How's that saying go? Show me a programmer with 20 years experience, and I'll show you a programmer that did the same thing twenty years in a row.

When we traveled(2015-2018): - laptop, no larger than 17 in screen, and the thinner and lighter the better. - portable monitor like the Asus ZenScreen MB14AC - VPN - universal power adapters & a surge protector - small mouse & small keyboard like the Logitech K380

Most of my Digital Nomading has been outside the USA in Europe & Asia. We stayed between several weeks to several months per location. Internet experiences, and requirements will vary country by country but as long as you stay in or near a large metropolitan area you can expect fast internet. The the only exception so far has been China, theirs was slow no matter where I went.

I always tried to make my personal hotspot(Google Fi) the last resort. I used a local hotspot, AirBNB/Cafe WiFi, and coworking spaces as must as possible. Also, for video conferencing, I'd lower streaming quality. No one needs to see my ugly mug in that high a resolution. VPN was not for video conferencing, or browsing reddit/HN. It was mostly for interacting with financial institutions, and transferring IP back and forth with work. It's up to you on how paranoid you wanna be.

There's a whole bunch of technical skills that Universities didn't teach when I was there. I would recommend reading The Pragmatic Programmers by David Thomas and Andrew Hunt to help with that.

Equally important are your soft skills. I would recommend reading The Hard Truth About Soft Skills: Workplace Lessons Smart People Wish They'd Learned Sooner by Peggy Klaus.

I work for a small company that's been around for 20+ years. All of those things you outlined as basic, are things that I have been fighting for the last eight years. I've won a few battles, compromised on a few others, but lost most.

In my opinion your expectations are too high for a small company. Most of the people I have worked with at small companies don't have experience with most those basic tools. Some actively are afraid of code reviews, and others see tests as writing the same code twice, hence a waste of time.

Management and coworkers pay lip service to wanting these things, but I've found that they see them as nice to have extras, and not as time saving efficiency increasing tools.

Don't get me wrong things can change. One way I found is to overwork myself and implement it outside of my normal projects. Then I just have to keep pushing and educating people to follow along. That's how I got the majority of our code under revision control.

The other way is that management finally has enough of a problem and someone convinces them one of those basics will make things better. In our case managment got tired of making new features live, and finding out afterwards that something else had regressed. That's how we got end-to-end tests.

Company culture can change, but it'll be slow. Try and frame things in a cost-benefit light for management. For developers try and show them how it will make their life easier, and show them the cool factor. Good Luck!

To each their own. It always fascinates me to hear about Java/.NET environments that massive. Do you only work on 1 project for months at a time? Do you not ever need to reboot into another OS? Is your laptop power efficient? Do you have a separate machine just for Gaming?

I mostly program in languages like Ruby & Perl using Vim. Even with my decked out version that has 35 plugins, and some other bells and whistles, I'm on average using 20 MB of RAM. Open/Close is near instantaneous.

I use Dvorak, I'm faster in Dvorak, and have less RSI issues. As an adult that works from hardware I control I almost never have to type QWERTY anymore.

In the past things like computer labs, and locked down school computers would have pushed me to recommend QWERTY. Nowadays everyone has their own iPad, or laptop, so this is much less of an issue.

The only time I have issues is during computerized testing, or using someone else's computer. I have a USB dongle that I can put between the keyboard and computer that'll swap the characters I type Dvorak, and the dongle swaps the QWERTY input to the correct ones as I go.

For testing I can request they change the layout, but it rarely gets approved. For random people, they usually let me add another layout without issue.

I'm recommending Dvorak, but there will still be a few pain points.

Been doing back end for 13 years, and I try to visit a programming conference or two a year.

I think on average back end churns slower. Every year I'll hit a conference, and hear about the latest and greatest, but only a fraction of that stuff sticks around, and gets integrated.

I believe most company's won't swap language/framework/libraries until absolutely necessary. So the adoption of new things you might see at a company is much slower than someone who job hops every 3 years.

The company I am at now, had a C++, cout << "<html>..." version of the site for 6+ years. The version that replaced that is a younger language with a MVC, but it's already been 9+ years since that was implemented, and it'll probably be a few more years until anything else supplants that.

Another thing that I think affects front end is the browsers. I don't know the stats, but I believe that Chrome/FF/Edge release more features, experimental features, and bug fixes per year, than your average language, or OS. This cascade of releases in turn effect front end code, and libraries. It's a wave pool, not a ripple in the pond.

- Not all IDEs show method signatures. - Not all languages have IDEs developed specifically for them. - Some IDEs require configuration/plugins to have that feature. - Some IDEs will give you method signatures for Standard libraries, but not custom ones. etc.

I head a tale that had the same lesson. Not sure where I heard it, but it went something like this:

There was a Buddhist monastery up in the mountains. Every day at noon the head monk would call everyone together in the main courtyard to meditate.

One day a cat that lived on the monastery grounds started to come to the courtyard during these meditation sessions. It would screech at, and scratch the monks while they tried to concentrate.

After a few weeks the head monk got tired of this. He ordered that every day before they meditate, the cat be caught. They tied up the cat away from the main court yard. After meditation the cat was to be released.

This went on for a few years and everything was fine. Then the head monk passed away. A new monk was appointed.

A few more after that the cat passed away. The monks retrieved a new cat from a nearby village and they started typing up this new cat; as is tradition.

As others have already said, it depends on location, definition of quality, and so on.

Below, I added some numbers from my past. The everything else is still just for minimum/essentials. It includes things like car insurance, utilities, repairs, gas money to get to work, clothing, etc.

--- In 2003 as a college freshman(college paid for by parents/loans), I got by in Jonesboro, Arkansas for around $7000 a year.

$3,000 - rent in a run down part of town. $1,000 - food $3,000 - everything else.

--- 2005, in Columbia, MO I got by spending about $14,000.

$8,000 - rent $2,000 - food $4,000 - everything else

--- 2006, in Columbia, MO I got by spending about $10,000.

$3,2000 - rented a nice 5 bedroom split 5 ways. $2,800 - food $4,000 - everything else

--- In 2015, at Lake Worth, FL for around $20,000.

$11,000 - rent $4,000 - food $5,000 - everything else

--- This year I'm looking to rent in Taipei, Taiwan. Here's what I have so far priced things out at. $16,000 - $25,000.

$12,000 - $18,000 - rent $2,000 - $3,000 - food $2,000 - $4,000 - everything else

In between the 2006 & 2015 rentals, I purchased and lived in a home.

Also, like most people over time I went from $500 clunkers to a $5,000 reliable car, rented in nicer neighborhoods, bought higher quality food, and so on.

I learned QWERTY first in high school around 2000. An hour a day over, 5 days a week over a month to get it down. Probably a few weeks of practice to do it without hesitation.

I learned Dvorak in 2005 or 2006. I spent about 4-5 hours, over 2 evenings with a free typing tutor program. After that it took me about 2 weeks internalize it. At that point I was probably the same speed or faster than before.

After that I used QWERTY for a few hours a week for the next few years. For public, and other peoples computers. After a little practice it was easy to switch back and forth without issue.

Around 2012, I stopped having to use public and other peoples computers so I stopped using QWERTY but maybe once or twice a year.

As of now I can with a little bit of mental effort switch back to using QWERTY, but nowadays I often miss type a few keys in QWERTY. I am slowly loosing it.

Some related observations:

For the longest time I have been forced to use QWERTY for all onscreen keyboards like my cell phone and tablets. Recently I got a Chromebook, and it let me have onscreen Dvorak. Turns out my brain is currently wired for onscreen QWERTY. I'm not sure if I really should put any effort into learning an onscreen keyboard.

I can type both Mandarin Pinyin, and the Japanese equivalent. For whatever reason setting up these input systems hard locks QWERTY underneath them. I have tried to do the mental gymnastics to use QWERTY to write in these other scripts and it is just too frustrating. I end up finding a way to switch it.

Currently I get my best work done in a cafe. Usually, without using headphones. There is the usual cafe background noises.

I find it hard to work from my small apartment, whether family is around or not, music or no music.

I forget the term but I think it has to do with the fact that I use this same room to watch TV, play video games, sleep, and eat meals. My desk and bed are only inches apart.

Using it, I mostly like. The new kernel supports my newer laptop hardware better. It "feels" like it runs smoother, fwiw.

Upgrading was bad. For my local machine, when it first came out trying to run the upgrade script would lock my system, and force me to hard reboot. I tried several fixes, but ended up just doing an install from CD over the old system.

For my web server, not copying 1 file to a new location before running the upgrade script caused me to destroy the whole system. I restored from backup. After researching about that file, I was able to do the upgrade with only a few broken packages needing my attention.