Tip jar

If you like CaB and wish to support it, you can use PayPal or KoFi. Thank you, and I hope you continue to enjoy the site - Neil.

Buy Me a Coffee at ko-fi.com

Support CaB

Recent

Welcome to Cook'd and Bomb'd. Please login or sign up.

April 23, 2024, 08:44:39 AM

Login with username, password and session length

To all you programmers and other such people

Started by hewantstolurkatad, May 19, 2017, 12:20:25 PM

Previous topic - Next topic

hewantstolurkatad

Bound to be a few here? What new technologies have you either been using in work or playing around with over the past year or so? Have any of them supplanted the things you typically used before then?



I had to do a bunch of crap with Redux over the past while, which meant I was working with Webpack a lot. Honestly don't fully understand it at all but I find it very hard to justify getting fully to grips with Gulp again when seemingly I can get most of what I'd want from it done through webpack and copypasting some configurations from the internet.

Having not worked with java in absolutely ages, should I just ditch it entirely and maybe check out kotlin or is java making any steps towards being a more pleasant experience? All the Oracle stuff is putting me off bothering too.
I was going to look into Go but can't think of any hobbyist uses I may have for it to learn through.

Sebastian Cobb

I've not learned anything new in ages really*. We seem to be flogging the same dead horses that should've long been turned into glue. There was talk of doing some front end in angular, but either the client didn't want it, we decided to stick to what we know.

I keep meaning to have a bash with python. It's lack of braces and loose typing are a bit alien to me given I professionally work in either Java or Pro*C and PL/SQL (despite hating Oracle because they're cunts).

*I actually find this a little terrifying because my work is currently one of those software companies that seems to see programmers as a 'low rung' and quite quickly promotes them out of that sort of thing into team leading and middle management, I'd rather shit in my hands and clap than do that sort of thing because it bores the arse off me and I'm becoming aware that my skills are stagnating.


Twed

Work with whatever fits the requirements (C is no good if you're writing for the browser, for example), allows you to expressive and doesn't make you sad.

I used to be a hardcore C++ guy, obsessed with learning more and more about it so I could be one of those rare people who actually knew how to write exception-safe code that doesn't blow up the system. Then life happened, I needed to be more practical, and I ended up writing primarily in Javascript (which I consider a better language these days, something that would make the C++ snob version of me from ten years ago sneer).

A language that doesn't make you sad is really important, IMO. That's why I'd recommend Python, Go or Javascript. There's an odd beauty in their elegance (Python) and/or flexibility (Javascript).  The more enterprisey languages (Java, C#) make me feel very sad, like I should putting on a suit.

MojoJojo

All old school tech here, but it does what we need so hard to argue to use anything newer. We still use CodeWrite (last updated 2003) because it's better at handling large log files than anything else. I got a bit tired of it and eventually searched out glogg as a partial replacement, but it can't quite do everything that's useful in codewrite and it's got a few of it's own annoyances, so I've not been pushing it another developers. I'll probably push to get SlickEdit at some point and use it in CodeWrite mode.

C++/assembler in the main, with a bit of python thrown in for testing bits out. It's sort of interesting knowing a language known by <20 people, although probably not very useful for the CV.

At least we finally upgraded from CVS (not dCVS or CVSNT, the original, not updated since 2008 one) for the software repository. git's a lot more fun to play with, even through shitty cygwin. The HW repository is still CVS though, and probably isn't going to change.

Sebastian Cobb

We're still on svn here. I've seen some youngish coders sneer at it but when questioned they don't seem to be able to justify why git is a panacea.

For our legacy apps our 'standard' editor is textpad, we then drop it on a Solaris(spits)/Redhat box and execute the makefile. I prefer gvim though (it's regex find and replace and vimgrep make it worth it imo) so use that, this seems to really upset some people.

Sebastian Cobb

Quote from: Twed on May 22, 2017, 02:25:58 PM

A language that doesn't make you sad is really important, IMO. That's why I'd recommend Python, Go or Javascript. There's an odd beauty in their elegance (Python) and/or flexibility (Javascript).  The more enterprisey languages (Java, C#) make me feel very sad, like I should putting on a suit.

Is it the language itself you don't like or the working environment that comes with it? In enterprisey stuff there's so much bureaucracy I often find I'm fed up before I've started writing any code.

Twed

Quote from: Sebastian Cobb on May 22, 2017, 04:11:48 PM
Is it the language itself you don't like or the working environment that comes with it? In enterprisey stuff there's so much bureaucracy I often find I'm fed up before I've started writing any code.
It's the way that anything you're going to end up interfacing with has taken the good concept of programming to an interface and got it just wrong enough to make anything you want to do limited. The languages are great in the hands of a good software engineer. Most software engineers are not good software engineers, and their mistakes become your problems. Pretty soon your life is a sea of IWhatevers and adaptors and workarounds for a tightly-coupled architecture and people who think that inheritance is for code reuse.

The absolute worst ever are the people who learned just enough C++ to come across private inheritance, and suddenly every implementation is baked into an inheritance chain instead of allowing dynamic composition.

Sebastian Cobb

#7
Quote from: Twed on May 22, 2017, 04:19:05 PM
It's the way that anything you're going to end up interfacing with has taken the good concept of programming to an interface and got it just wrong enough to make anything you want to do limited. The languages are great in the hands of a good software engineer. Most software engineers are not good software engineers, and their mistakes become your problems. Pretty soon your life is a sea of IWhatevers and adaptors and workarounds for a tightly-coupled architecture and people who think that inheritance is for code reuse.

The absolute worst ever are the people who learned just enough C++ to come across private inheritance, and suddenly every implementation is baked into an inheritance chain instead of allowing dynamic composition.

Lol we had a contractor for a while who had clearly been told about abstract and implementation classes and taken it to heart because every single controller class he ever built had one of each even if one of them basically did nothing.

You can also tell one of our systems was the result of telling a load of c programmers they're java programmers now because it is rife with equality checks like

if(string1.compareTo(string2) !=0)
{
    doSomething();
}



I see what you're saying though. Writing 'glue code' in a structured java system is pretty painful. Although if the structure was right you wouldn't need to.

EFB

I used to do a lot of Python and Java, now I'm doing a lot of JavaScript and React.

React Native looks nice too, being able to create native programs for mobile devices, lovely.

Sebastian Cobb

React's mostly front-end stuff isn't it?

I know with node you can do server-side js; the idea of that makes me very uncomfortable.

hewantstolurkatad

React is entirely frontend?

Node is pretty good imo, I'm not sure of the performance specifics but it's so goddamn easy to set up and test and in a lot of cases there's gotta be huge upsides for both sides of the team to be working in JavaScript. It's pretty hard to motivate myself to bother with any other options server side when I'm throwing something together myself.



I'm looking for a new job at the moment and the idea of not working with JavaScript is pretty off-putting (modern JavaScript, job listings that stress importance on jQuery are equally off-putting).
Really should improve my Python, that's a language I really enjoy writing in.

Consignia

The front end of the application I'm currently working on uses React. I really can't get on with it, I find it really spaghetti and I don't like the whole JSX stuff. I'm sure if I spent more time on it, I'd grow to like it, but my area's currently data centric at the moment. I've heard it's a bit of learning curve, and then it's brill.

Personally I'm really into the whole Big Data thing the moment. Professionally, I'm using Spark a lot for large data processing. I also hobby it a bit, by doing Machine Learning, and using things like SparkML for that. I find it's pretty cool technology, even though I'm not convinced there are as many use cases for Big Data as there actual people using it. Big Data envy, indeed.

hewantstolurkatad

Have you tried using Redux with it? It's fairly convoluted to get going but by splitting the data from the interface it's a lot less of a tanged mess (way more effort than it's worth for smaller things though)


Have you any recommendations of good beginner projects or source materials for machine learning?

Consignia

Quote from: hewantstolurkatad on May 22, 2017, 06:44:54 PM
Have you tried using Redux with it? It's fairly convoluted to get going but by splitting the data from the interface it's a lot less of a tanged mess (way more effort than it's worth for smaller things though)

I believe we do. The code looks structured enough, it's just I joined the project after the UI was pretty mature. I'm certain it's me not React that's the issue.

Quote
Have you any recommendations of good beginner projects or source materials for machine learning?

Yup, I'd really recommend you having a look at the Coursera Machine Learning course: https://www.coursera.org/learn/machine-learning . It takes you through a lot of the basics of machine learning algorithms, and the course work will really let down and dirty with them. It's quite academic, and the code you write in Matlab, but I think it takes you through things so well, you can apply what you learn using other ML libraries.

Twed

Quote from: Consignia on May 22, 2017, 06:28:27 PM
The front end of the application I'm currently working on uses React. I really can't get on with it, I find it really spaghetti and I don't like the whole JSX stuff. I'm sure if I spent more time on it, I'd grow to like it, but my area's currently data centric at the moment. I've heard it's a bit of learning curve, and then it's brill.
Give Angular 4 a shot if you're not getting along with the React world. Although... Typescript.

Anyway, you know what's magical? Observables. They're also baffling. The linked site is literally a load of balls.

Zetetic

Quote from: hewantstolurkatad on May 22, 2017, 06:44:54 PM
Have you any recommendations of good beginner projects or source materials for machine learning?
I've found that the most important thing is to have actual projects that you want to solve.

It surprises me that there's not more interest in fairly capable 'statistical learning' methods like MARS.

Neural nets are lovely if you really do have complex problems that can only be expressed via vast and varied data sets and you don't care to be able to inspect the solution (at least not with an awful lot of prodding) - but I'm not sure that's really the case for many problems that people try to apply 'machine learning' to.




I've never got on with JavaScript - prototypical inheritance for a start - but I've never had to wrestle with it for any length of time. Anything I build for work has to gracefully degrade as far back as IE8 with JavaScript disabled (although WannaCry might have just fixed that), so I'm generally just mildly decorating controls.

I still don't really like anything half as much as Ruby (and Rails) but then I quite liked Smalltalk and Objective-C. I suspect this reflects that I'm very much a part-time programmer.

Sebastian Cobb

I've been meaning to pick up python for ages, but have been struggling to get off the ground in my own time as I couldn't think of anything useful to do with it, well aside from a script for a twitter bot that forecasts the weather entirely in pictures of steve macdonald.

But I was just faffing about on the web looking for something I saw before that could mechanically actuate a switch and found a schematic to do that with an arduino/clone and, then I got thinking if I used a pi instead (which I'm sort-of familiar with as I made a diy ambilight thingy using prebuilt tools) I could add all sorts of fancy features (check wifi for my phone's presence before bothering, amazon dash button etc) so now I'm sort of excited. It's been ages since I've felt like that over coding tbh.

Twed

Quote from: Sebastian Cobb on May 22, 2017, 09:06:43 PM
But I was just faffing about on the web looking for something I saw before that could mechanically actuate a switch and found a schematic to do that with an arduino/clone and, then I got thinking if I used a pi instead (which I'm sort-of familiar with as I made a diy ambilight thingy using prebuilt tools) I could add all sorts of fancy features (check wifi for my phone's presence before bothering, amazon dash button etc) so now I'm sort of excited. It's been ages since I've felt like that over coding tbh.
Take a look at ifttt.com + Maker Webhooks. Lots of scope for fun home automation things.

buzby

Quote from: MojoJojo on May 22, 2017, 03:30:47 PM
All old school tech here, but it does what we need so hard to argue to use anything newer. We still use CodeWrite (last updated 2003) because it's better at handling large log files than anything else. I got a bit tired of it and eventually searched out glogg as a partial replacement, but it can't quite do everything that's useful in codewrite and it's got a few of it's own annoyances, so I've not been pushing it another developers. I'll probably push to get SlickEdit at some point and use it in CodeWrite mode.

C++/assembler in the main, with a bit of python thrown in for testing bits out. It's sort of interesting knowing a language known by <20 people, although probably not very useful for the CV.

At least we finally upgraded from CVS (not dCVS or CVSNT, the original, not updated since 2008 one) for the software repository. git's a lot more fun to play with, even through shitty cygwin. The HW repository is still CVS though, and probably isn't going to change.

Basically the same as me, but with even older languages (BT CORAL, Intel PLM86 & PLM386, Intel C, Intel ASM386, CAD-UL XDB debugger, Microtek and Greenhills MC68k C++, assembler & X-Ray debugger). We are also CodeWright users (mainly as we wrote a PLM syntax plugin and never got round to doing one for another editor). We use Clearcase for version control and build mostly, though a couple of the older products use Merant PVCS ans SCCS on Solaris. All our build and test scripting is done in Perl, and there are also some Windows tools we maintain using Visual C++ and SourceSafe. I write some small test and utility programs in C# too. Wev've just developed the firmware for some new PIC32-based hardware in MPIDE which uses Microchip's XC32 compiler (though we have tweaked some of MPIDE's library code to better suit our application).

All ancient technology, but it's a massive embedded system that has to be military-level reliable - redeveloping it in newer languages (in the few instances where newer compilers exist for some of the hardware) and proving it to be functionally and reliably equivalent to the existing executables would be a massive undertaking that nobody's going to invest in at this stage in the product's lifecycle (it's been deployed for 37 years so far). When it eventually all gets turned off I'll probably end up working in B&Q.

doppelkorn

Quote from: Zetetic on May 22, 2017, 08:56:03 PM
Anything I build for work has to gracefully degrade as far back as IE8 with JavaScript disabled

Can I ask what you do for work?

doppelkorn

Quote from: Sebastian Cobb on May 22, 2017, 09:06:43 PM
I've been meaning to pick up python for ages, but have been struggling to get off the ground in my own time as I couldn't think of anything useful to do with it

There's two books that I keep meaning to get for project-based Python learning.

Beginning ethical hacking with Python
Automate the boring stuff with Python

I did a beginners Codecademy course (my first ever coding course) but then just stopped because I, too, had no use for it. I originally learnt it so I could do an online NLP course where Python was a prerequisite. Now I have a kid, I don't even have time to shower.

Sebastian Cobb

Quote from: doppelkorn on May 23, 2017, 12:55:03 PM
There's two books that I keep meaning to get for project-based Python learning.

Beginning ethical hacking with Python
Automate the boring stuff with Python

I did a beginners Codecademy course (my first ever coding course) but then just stopped because I, too, had no use for it. I originally learnt it so I could do an online NLP course where Python was a prerequisite. Now I have a kid, I don't even have time to shower.

I'll look at them. I really should automate more things really.

I've slowly been looking at Python for the Busy Java Developer.

Twed suggested ifttt but that's partially why I haven't bothered really, there are now tools that could do anything I was going to write in seconds which makes starting something - even if it has value as a learning experience a bit difficult, for me anyway.

Twed

Quote from: Sebastian Cobb on May 23, 2017, 01:28:49 PM
Twed suggested ifttt but that's partially why I haven't bothered really, there are now tools that could do anything I was going to write in seconds which makes starting something - even if it has value as a learning experience a bit difficult, for me anyway.
ifttt is so limited by default though. There's no "if this AND this then that" for example. You can't by default turn ALL the lights in your home on if you've come home and switched the hallway lights on, for instance. There's lots of scope for custom stuff.

Sebastian Cobb

I should really look into it.

That Python automation thing has made me think of something seeing as you could do a lot of the string manipulation stuff in bash.

What do you lot use to write a lot of once-use sql statements quickly? Say you get handed a load of stuff in an excel table that needs modifying or putting into the db by hand and isn't necessarily an exact representation of a table in the db? things like concatenate can get really messy very quickly.

I looked into a various tools and found a lot of them just didn't quite work nicely with excel columns etc and just ended up bodging something in vba that's proven to be very flexible:






Public wbINPUT As String
Public wbOUTPUT As String


Sub genQueries()
    wbINPUT = "Data In"
    wbOUTPUT = "Query Out"
    Dim query As String
    Dim x As Long
    Dim y As Long
    Dim xs As Long
    Dim ys As Long
   
    Worksheets(wbOUTPUT).Cells.Clear
   
    With Worksheets(wbINPUT)
        ys = .Range("nrStartPos").Row
        xs = .Range("nrStartPos").Column
        y = ys
        x = xs
        Do Until .Cells(ys, x).Value = ""
            x = x + 1
        Loop
        Do Until .Cells(y, xs).Value = ""
            Worksheets(wbOUTPUT).Cells((y - ys) + 1, 1).Value = toSql(xs, ys, x, y)
            y = y + 1
        Loop
       
    End With
    Worksheets(wbOUTPUT).Activate
End Sub
Function toSql(xs As Long, ys As Long, x As Long, y As Long) As String
Dim query As String
Dim sql As String
Dim i As Integer
Dim varAsString As String

sql = Worksheets(wbINPUT).Range("nrMasterQuery").Value


    For i = 1 To x
        varAsString = Worksheets(wbINPUT).Cells(y, i).Value
        If varAsString = "" Then
            varAsString = "NULL"
        End If
        sql = Replace(sql, "%" & CStr(i), varAsString)
    Next i
    toSql = sql
End Function


What makes it handy is you can often dump what you're given in there, even if you're only interested in one or two columns then just reference them. I've tried to make it cleverer but I always find the basic approach is easier.

Blumf

Quote from: Sebastian Cobb on May 23, 2017, 02:19:58 PM
What do you lot use to write a lot of once-use sql statements quickly? Say you get handed a load of stuff in an excel table that needs modifying or putting into the db by hand and isn't necessarily an exact representation of a table in the db? things like concatenate can get really messy very quickly.

Usually I dump the data into CSV and use a mixture of Lua and/or Vim to jiggle it into shape.

Vim in particular, it's amazing how far you can get with just a handful of :s commands.

doppelkorn

We once had a quarterly report to do at work that a team of five or six people would spend days on. It was manually going through some spreadsheets/reports and generating some traffic light tables where tings were good (green), ok (orange) or bad (red).

I was convinced at the time that it would be really easy to automate with some basic VBA or, I dunno, some sort of script. I remember looking into it and finding out that the concatenate feature wasn't powerful enough. In the end I forced a move to another team rather than sort the problem out. That showed 'em.

Sebastian Cobb

Quote from: doppelkorn on May 23, 2017, 03:55:00 PM
We once had a quarterly report to do at work that a team of five or six people would spend days on. It was manually going through some spreadsheets/reports and generating some traffic light tables where tings were good (green), ok (orange) or bad (red).

I was convinced at the time that it would be really easy to automate with some basic VBA or, I dunno, some sort of script. I remember looking into it and finding out that the concatenate feature wasn't powerful enough. In the end I forced a move to another team rather than sort the problem out. That showed 'em.

All our legacy reports use vba to connect to oracle and rejig the data in hidden sheets, which they eventually copy as flat values so nobody can see the references. I haven't got a clue how to do relatively simple day-to-day excel stuff though because I'm not an accountant.

doppelkorn

I was maybe hoping this page would run a bit more, but can someone explain to me why Go is so good?

hewantstolurkatad

Quote from: doppelkorn on May 25, 2017, 05:30:53 PM
I was maybe hoping this page would run a bit more, but can someone explain to me why Go is so good?
It's basically designed ground up as a server language as far as I'm aware, so there's a focus on efficiency and performance (especially regarding concurrency)  but it also tries to minimise the tedium/complexity of faster languages.

A lot of the comparisons for Go will revolve around groups who switched their APIs from Ruby, Python or Node, so the differences in performance are pretty drastic in those comparisons. I've literally no clue how difficult it'd be to build a restful api in something lower level but Go is a very happy medium

amnesiac

I'm an old man now, in my youth I used to love learning new tools/ languages now I'm just stuck on C#/ MS SQL Server. I'd like to get into NoSQL as that's sooooooooo hot right now baby but there's no real motivation. I'm much more wary of the impact of change than I was when I was younger and am less likely to get some new thing without it being a mature product with a credible vendor. Saying that MS are a bunch of cunts and charge SQL Server licences by the no. CORES now. The number of times they've fucked us over!