Tag: career

  • No-code Software Engineering

    Low and no code applications have been around for a long time. In my career, I’ve seen Access, Delphi, PowerBuilder, and various 4GL packages used to build software for business users. Some worked well, some didn’t, and often many didn’t scale. Not all, but many.

    The problems in many of these tools, at least to me, was that many of the “developers” using them weren’t developers. They were business people trying to get something done quickly. Often these weren’t people thinking about performance or software engineering in the way that many developers think of those topics.

    Arguably, there are plenty of Java, C#, and other developers that don’t think things through either. However, many developers do want to solve problems and build interesting solutions. They don’t (often) want the drudgery of moving around UI elements or reinventing CRUD data operations.

    I saw an interesting piece this week noting that No-code doesn’t mean we avoid software engineering. The author praises some of the no-code platforms because they allow developers to do the fun part of building logic and solving problems without the tedious nature of writing an IF statement with the correct syntax. There are a number of reasons given, which sound good.

    I don’t know that I think that no-code is the way to go, but I do get the idea of using lots of proven and tested components, features, services, and more rather than reinventing them. I think that connections to database objects, RDBMS or NoSQL, ought to be easy, and lots of the mundane work of plumbing systems together could be centralized and reused. I certainly think that LINQ or simple query languages make sense, though likely having a way to more quickly and easily build/test/refactor and deploy database methods as well as make them more flexible (select col from @table, anyone?) might simplify database coding.

    I doubt we’ll get rid of C#, Java, or other fairly low level code anytime soon. I write about better programming languages recently, and I can see us moving to more succinct languages over time, but that will take decades. There is far too much invested in current codebases by developers and organizations to think about quick switches.

    The best way to build better applications is to have developers continue to learn, practice, test, and change their coding. They need to seek to be better, which I think most of them do, but management and leaders need to demand this and invest in staff (time and money) to help them improve. Then I suspect that whether you use lots of code or none, all your applications will work better.

    Steve Jones

  • Goal Progress–Mar 2021

    I set goals at the beginning of the year, and I’m tracking my progress in these updates during 2021.

    As I look at goal progress for 2021, I’m going to follow a similar pattern as last year. I’ll give myself a current grade and report on overall progress in of the areas where I set goals.

    Current Grade: B-

    I think I’m making some progress, and getting some items moving forward. I haven’t spent as much time on my technical skills, but I have been pushing project stuff forward a bit.

    Reading

    The goal was 4 books (3 non-fiction, 1 tech). Here’s the current progress:

    Technical Skills

    I’m solving the Advent of Code three times.  I’m also studying for certification.

    • Certification –  AZ-900 – 5%
    • Certification – DP-200 – 0%
    • Skills – T-SQL – 2020 Advent of Code – 4/25
    • Skills – Python – 2020 Advent of Code – 4/25
    • Skills – PowerShell – 2020 Advent of Code – 4/25
    • Skills – TBD

    Projects

    I had a few projects for myself. Most of January was supporting SQL Memorial as well as doing some SQL Saturday/Data Saturday stuff. So far things appear to be working fine.

    • SQL Saturday Foundation – 60%
    • Support events: approved a PR or 2 this month, helped with feedback on the Data Saturday logo project, and started conversations about events this year with a few people
    • Speak at the 3 local user groups, at least one live presentation – 0%
    • Help organize a Denver/Colorado event, live or virtual – 10% (conversations)
    • Complete my Power BI Volleyball report – I know lots of kids will use this, so I need to get it done – 20%
    • SQL Memorial – 80%

    I added the SQL Saturday Foundation as a project, since this will occupy some time. I don’t plan on hiring anyone, but with me and some volunteers, I’m hoping we build a website. I spent some time writing a little PoSh this month to rip through the XML from the old site and rebuild an archive. I used the Data Saturday-ish site as a template and got something up with a few pages.

    However, I need to make this more maintainable until I get some help from others. So I’m looking at more themes and trying to get Jekyll to make this easier to update. The site is mostly working, though I can’t get a domain redirect until I get a privacy policy approved.

  • Goal Progress–Feb 2021

    I set goals at the beginning of the year, and I’m tracking my progress in these updates during 2021.

    As I look at goal progress for 2021, I’m going to follow a similar pattern as last year. I’ll give myself a current grade and report on overall progress in of the areas where I set goals.

    Current Grade: C

    I think I’m making some progress, but perhaps not as much as I’d like.

    Reading

    The goal was 4 books (3 non-fiction, 1 tech). Here’s the current progress:

    Technical Skills

    I’m solving the Advent of Code three times.  I’m also studying for certification.

    • Certification –  AZ-900 – 5%
    • Certification – DP-200 – 0%
    • Skills – T-SQL – 2020 Advent of Code – 4/25
    • Skills – Python – 2020 Advent of Code – 4/25
    • Skills – PowerShell – 2020 Advent of Code – 3/25
    • Skills – TBD

    Projects

    I had a few projects for myself. Most of January was supporting SQL Memorial as well as doing some SQL Saturday/Data Saturday stuff. So far things appear to be working fine.

    • Support events: submitted and approved some PRs.
    • Speak at the 3 local user groups, at least one live presentation
    • Help organize a Denver/Colorado event, live or virtual
    • Complete my Power BI Volleyball report – I know lots of kids will use this, so I need to get it done – 20%
    • SQL Memorial – 80%
  • 2020 Advent of Code–Day 3

    This series looks at the Advent of Code challenges.

    As one of my goals, I’m working through challenges. This post looks at day 3.

    Part 1

    Day 3 was tough. The explanation isn’t great, at least, I didn’t get it at first. Essentially you have a map, and then you have some slope. The first part has a slope of right 3, down 1. If you move, assuming the upper left is (1,1), the next spot is 2, 4. That’s if you count going down as positive.

    Here’s the map:

    ..##.......
    #...#...#..
    .#....#..#.
    ..#.#...#.#
    .#...##..#.
    ..#.##.....
    .#.#.#....#
    .#........#
    #.##...#...
    #...##....#
    .#..#...#.#

    If I count each space, then there is a period (.) in this (2,4) space. If it’s a tree, then there is a hash (#) there. We are trying to count trees before we hit bottom.

    The trick I missed is that the map we’ve given repeats. It repeats to the right as often as needed to get to the bottom.

    This is really a coordinate problem, counting each down as we move, and repeating the map. The trick often in a short width here is to do the math to wrap around from the right to left if you run out of room.

    In SQL, I used a loop. I didn’t spend a ton of time, but couldn’t see a good way to avoid this as I need this to be readable, and I need this to keep working through the map. Here’s the code:

    WHILE @currentrow <= @rows
      BEGIN
        SELECT @currentcol += @right
        IF @currentcol > @width
          SELECT @currentcol = @currentcol - @width
        SELECT @currentrow += @down;

       SELECT @trees = @trees + CASE
           WHEN SUBSTRING(dataval, @currentcol, 1) = '#' THEN 1
           ELSE 0
        end
         FROM day3
         WHERE rowkey = @currentrow
      END
    SELECT @trees AS TreeCount

    I move, count the value if there’s as tree, and then continue moving through the next rows. The WHERE clause orients the rows.

    It worked. I go the right answer here.

    Part 2

    In part 2, this changes to checking a number of sloops and then multiplying the results together. In terms of my code, this is really a repetitive way of running the code again. I could have used different variables and checked multiple slopes at once, but I was busy.

    In python, I did something similar. I essentially calculated the next X and Y position, and then looped through the file. Each time the Y matched the current row, I checked for the matching #. If it matched, increment.

    Once I matched the correct Y, I incremented X and Y.