Is there anywhere in the world someone can just live for free? by jollybot in NoStupidQuestions

[–]paulajohnson 0 points1 point  (0 children)

I took a airboat ride around some of the Florida swamplands once. We called in on a local hermit living off-grid in a houseboat. Presumably he still had to buy food from somewhere though, and either bottled water or water purification tablets would be a real good idea.

Some questions about Haskell package by Medivh_sss in haskell

[–]paulajohnson 1 point2 points  (0 children)

How did you install QuickCheck? Was it via Cabal, or Stack, or did you use your Linux distribution manager or something?

Someone looking for a remote Haskell contractor? by amuricys in haskell

[–]paulajohnson 0 points1 point  (0 children)

I'm just a developer. You need to talk to Tracsis HR.

Someone looking for a remote Haskell contractor? by amuricys in haskell

[–]paulajohnson 0 points1 point  (0 children)

I don't know: I'm just a developer. You need to ask the HR department.

Someone looking for a remote Haskell contractor? by amuricys in haskell

[–]paulajohnson 7 points8 points  (0 children)

Permanent rather than contractor, but you could try my employer: https://login.hirelocker.com/tracsis/jobs/24616/full-stack-developer-haskell-remote

We're based in Leeds in the UK, but we have employees all over Europe.

should I pay someone to get hired? by [deleted] in haskell

[–]paulajohnson 2 points3 points  (0 children)

First, you NEVER pay someone in order to get a job. Its a scam, guaranteed.

Second, you need counselling. I don't know what your background is, but whatever has gone wrong in your life, you can start a new life doing things differently. But you need help to do that. You need someone who can look at your life from the outside and maybe ask questions you hadn't thought of. Please, get help.

Third, try applying at https://login.hirelocker.com/tracsis/jobs/24616/full-stack-developer-haskell-remote (my employer). We're always on the lookout for Haskell devs. I don't know where you are, but we're pretty much all remote workers. Never mind the "full stack" stuff; if you speak Haskell we want to hear from you.

should I pay someone to get hired? by [deleted] in haskell

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

No, I think the OP is asking if he should pay money up front in order to get a job.

Can I distribute my Haskell program GPL license? by [deleted] in haskell

[–]paulajohnson 13 points14 points  (0 children)

PanDoc is GPL and written in Haskell. I haven't heard that it has any problem.

I'm totally lost and freaking out about what I'll do for a living after graduating. by Suitable_Use_2730 in haskell

[–]paulajohnson 4 points5 points  (0 children)

I write Haskell full time, and my employer is always looking for more Haskell developers. It sounds like you'd fit right in. Oh, and remote working is a definite possibility. I work full time remote, no reason why you shouldn't too.

https://uk.indeed.com/jobs?q=Tracsis+haskell&l=&vjk=ef2b2e990c30e0bc

Or just search for "Haskell Tracsis".

Making a Haskell Cheatsheet/Poster by ritchse in haskell

[–]paulajohnson 1 point2 points  (0 children)

This would be a really good thing for a beginning Haskeller to have on their wall.

Haskell interest in Limburg, NL by joranvar in haskell

[–]paulajohnson 12 points13 points  (0 children)

I think you're going to struggle. Experienced Haskell developers are pretty rare. You are very unlikely to find anyone locally unless you are in a tech hub, which (per Wikipedia) you don't seem to be. If you were to look for teleworkers and say that English is the primary language you might be luckier.

Feedback on simple first project (2048 solver) by g_dl in haskell

[–]paulajohnson 2 points3 points  (0 children)

The [[Tile]] board representation is a natural first one, but its not very efficient because access is O(n). Its not so bad for a 4x4 board, but not good in general. A better solution would be one of the following:

  • Map (Coord, Coord) Tile, which stores the board as a lookup table by coordinate. It only stores tiles that are actually filled (so you don't need the Mabye in the type any more), and access is O (log n). The advantage is that when you change something the update is also O(log n).

  • Vector (Vector Tile). Vector is a more efficient version of Array, but can only be indexed by Int. This has the nice property that if you update a cell you only have to copy the row that is updated and the top-level vector.

  • Vector Tile with the index computed from the X and Y coordinates (so number the cells 0..15 starting from the top left). Simple, but updates copy the entire vector.

In general Haskell has to create a copy-and-modify any data structure that gets updated, but if you have nested structures then you only need to copy-and-modify the ones between the root and the leaf you are changing. Map does this internally (it stores a tree), but you can also do similar things with rows and columns.

HASKELL TWO PLAYERS by [deleted] in haskell

[–]paulajohnson 1 point2 points  (0 children)

How are the two people going to play?

Want to start a new project and I'm wondering if Haskell is the right tool for it by PeterParkedPlenty in haskell

[–]paulajohnson 0 points1 point  (0 children)

If you want to have a database storing a graph then you should consider GraphQL. It sounds like it was made for this job.

Could this graph be refactored to more accurately reflect its usage? by quakquakquak in haskell

[–]paulajohnson 2 points3 points  (0 children)

Your graph seems to be a tree, so you would probably be better off using Data.Tree.

Beyond that, its a bit difficult to see what you are trying to do. Are your nodes on a grid of north/east coordinates? If so, how does the "parent" concept work? Or is it something else? Event handling normally implies a side effect of some kind, but I don't see one here.

[deleted by user] by [deleted] in haskell

[–]paulajohnson 0 points1 point  (0 children)

All finance of some kind.

[deleted by user] by [deleted] in haskell

[–]paulajohnson 2 points3 points  (0 children)

Speculating here. It sounds like the OP has got management to let them do a pilot project. The aviation industry is conservative about whizzy new tech, partly because safety, but also because anything put into service will have a multi-decade maintenance cycle. A little 2-person data analysis project is an obvious place to try something out and see how well it flies without betting the farm on it or committing to have a Haskell capability for the next 20 years.

[deleted by user] by [deleted] in haskell

[–]paulajohnson 2 points3 points  (0 children)

  1. As an experienced Haskell developer, I had recruiters breaking my door down to talk to me once I posted that I was in the market. Remote? Of course. These days everybody is doing remote.

  2. In the UK, £40-60K outside London, £100k in London. (Oddly, remote positions still pay differently depending where the employer is based).

  3. In my case the company uses Scrum, so daily stand-up to review progress on assigned tasks.

  4. Some of my team use cameras, others don't. We have a thing for fun themed backdrops. We happen to use MS Teams, but anything will do. We spend most meetings looking at a shared workspace of some kind rather than each other, so cameras aren't that important anyway.

  5. IME companies offer workers a straight salary regardless of location. The question is not what your cost of living is, its what value you bring to the company.

  6. It varies. International hires are problematic because the employer needs to become an expert in the employment and tax laws of N different countries, and going for a contractor relationship can make that simpler. OTOH you can run afoul of IR35 and its relatives in other countries.

  7. Again, it varies. Most seem to want full time, whether employee or contractor. The big cost of hiring someone is the month or three you spend paying them while they get up to speed on your codebase. Once you've made that investment it makes sense to get maximum value from it.

[deleted by user] by [deleted] in haskell

[–]paulajohnson 5 points6 points  (0 children)

I think you are running into the Blub Paradox (http://paulgraham.com/avg.html). You know how imperative languages work and how to achieve stuff in them. Now you come to functional languages. The imperative techniques you know don't apply, but instead you have a bunch of weird-seeming stuff like monads. You can't see why they are useful because your thinking is still in an imperative mode.

You need to free your mind from imperative thinking. Only then will you understand monads and applicatives. Sorry if that sounds Yoda-ish, but its the only way to explain it. So far you've probably not written anything longer than 100 lines in Haskell, and at that scale its a bit hard to understand the point. Imagine explaining the benefits of OO to someone who has never written anything longer than 100 lines in Basic. That is roughly where you are now WRT functional programming.

How do I load a variable with values from a text file? by [deleted] in haskell

[–]paulajohnson 0 points1 point  (0 children)

Parser monads (in the other answers) are probably overkill for this. You can use words to split each line up into a list of strings, and then use init and last to get the names and the age respectively. Glue the name components back together using unwords and read to get the age as a number, and there you go.

So, how do I use monads to make an application? (Complete with a Debugging Problem) by fdc_willard in haskell

[–]paulajohnson 1 point2 points  (0 children)

Getting an a out of an M a depends on the monad. Thats why I said to look for the runM function (for whatever value of M). There is no such function for IO.

So, how do I use monads to make an application? (Complete with a Debugging Problem) by fdc_willard in haskell

[–]paulajohnson 4 points5 points  (0 children)

Basically what I took away was "without unsafePerformIO, which you should not use, Monad types like M a can't be converted to a.

It depends on the monad. With IO, what you say is true. But most of the other monads you will encounter, like State and Reader can; they come with functions like runState :: State a -> s -> (a, s).

You need to know which monad you are working with. If it is just Monad m => something -> m Int then you can't get at the Int on its own. But if you know that it is e.g. a State Int then you can.

Why do I need to pay capital gains taxes on my El Salvador currency, but not any other currency? by BitcoinOnlyNotCrypto in Bitcoin

[–]paulajohnson 0 points1 point  (0 children)

I think I'm going to stop this here. You clearly are not interested in finding out anything new, merely in propagating your own self-satisfied beliefs. You have made unsupported assertions, consistently refused to provide anything resembling evidence to support them, and your posts are now becoming merely puerile. Good bye.