• Activity
  • Votes
  • Comments
  • New
  • All activity
    1. Any developers/designers interested in a helping build a proof-of-concept for a new type of data-centric app?

      Wow it was hard to describe this in the title! I should have said "data-centric APP" not UI. Sorry! LOL I have had an idea for 25 years that I keep NOT pursuing because I was convinced that the...

      Wow it was hard to describe this in the title! I should have said "data-centric APP" not UI. Sorry! LOL
      I have had an idea for 25 years that I keep NOT pursuing because I was convinced that the next big version of Linux/Windows/etc would include a more civilized way to manage data. It just seems obvious in my strange mind, I guess that means intuitive. I've discussed the idea and worked on refining the concepts with about 20 people and they all agreed.

      My idea is based on a huge paradigm shift about managing all forms of data by the user. It's about how we manage data, not just file-system stuff or yet-another Windows/File Explorer or any of the numerous current Linux varieties. I'm honestly shocked that in 2019, the most original idea that's come about is to remove all the menus and toolbars (freeman) or add a bunch of tabs and hundreds of buttons (pretty much everything on Windows).

      I am a software engineer and designer with 35 years experience - but with business class apps, not OS stuff. I am semi-retired and have a great deal of time to work on whatever interests me. And please note: Despite my advanced years ;-) LOL I am very current on the technologies I work with daily, which is mainly .net/c#. However, I just finished a year-long project that had a Java client running on a Raspberry Pi (which I love) paired with a WCF service running in IIS, along with an asp.net web client. Now I'm not an expert in any of that, but I'm not too shabby I don't think as I've made a good living and do mostly volunteer work right now.

      I currently manage a massive amount of data, from files/dirs on Windows and Linux file-systems, to MSSQL and mySQL on both Windows and Linux, and of course some cloud data. And it takes several tools as you know, and it's incredibly inefficient and painful. And of course on Windows, Windows/File Explorer is - eh, I can't find a word strong enough. On Linux not much better. And I've spent the past two years searching, researching, testing, and praying.

      My idea is to build an app that allows users - not just developers like me - but mostly aimed at business users - to manage data from various sources/technologies in a single unified and intuitive manner. The physical aspect is divorced from the UI which is divorced from the management engine. And it's grouped the way the user THINKS and WORKS with it. For example, let's say for PROJECT-A (and Client-1) I have various source code locations on 2 local hard drives, but also documents (technical specs, or maybe letters to the client, spreadsheets or timelines), and of course likely a database or two, some web-site links. How many places and how many apps would I have to use today to keep them all close by so I could get to them? Well, there'd be a couple of drive letters probably, maybe a few sub-folder levels deep, maybe documents on a network share, some collaborative docs in the cloud, and some web-site links in whatever-browser-you-use. You get the idea.

      No file manager on any OS can give you much more than "Places" or file-system - drive letters on Windows or some mount points on Linux. Things like MyDocuments, MyMusic, MyInsanity - that stuff makes no sense because it's not how people work. What I want is a "work-space" where I can have any number of what I call "Data Sources" - and it doesn't matter what physical technology is underneath it - local hard drive, local sub-folder, mapped drive, unc mount, cloud, ftp - don't care - don't need to. I create a work-space, add data sources, order them however I want, name them whatever I want, and each "Data Source" has a manager or provider. A filesystem provider would make your data source look like Windows Explorer. But a database provider could look like MS SQL Server Manager or other db admin tool. And you put that workspace in a tab if you want, and have as many others in other tabs - or you put them on a menu, or on a popup that a middle-click brings up - doesn't matter. And everything I've just written, plus it's settings, is represented by Viewer objects. A hierarchical - tree-view or the likes - a flat view - a list-view - a preview pane, or editor pane - navigation tool (path/breadcrumbs) - a command line shell pane - drag/dock wherever in the tab you want. A main menu/toolbar + status-bar would be global and shared. And all THAT is bundled into a PARENT object - which contains the work-spaces, which contains the tabs, which contains the data sources + provider views/panes. And you can have as many of THOSE - parent objects - as you need, easily accessible in the custom titlebar at the top, or bottom, etc..

      The point is - when I am working on PROJECT-A I manage it in a tab that contains ONLY the drive letters, or mount points, that are relevant (and named what I choose, meaning no drive letters forced on me even if that is the underlying reality nor any full paths or full URLs - just logical names I assign). This will NOT be some massive file manager with every folder on the system or 18 drive letters I'll never use. It will have all the web-site bookmarks I need, as well as databases I'm working with. This won't be an ALL-IN-ONE type of thing - you will STILL use your external apps, web browser, IDE or editor, mail app - but it will be a SINGLE place where ALL those data items get represented and where you can manage them in exactly the same way. I can copy/paste an email message to a file on my workstation, or copy a file from a network share to some machine remotely using ftp or http.

      I hope this makes some kinda sense and doesn't just sound like the ramblings of yet-another aging geek who thinks he's got a great new idea. My usage scenarios are literally based on things I do every day, and are the result of observing myself as I work to see what my mind is doing. I do realize that we all work in our own way, and I've taken that into account. But there are basic things we all do concerning data management. And as I have hired, trained, and worked with a huge number of fellow programmers over my 35 years - without exception this was the most common soft point for them all. Keeping track of data. The same applies to all my clients. I've written software for accountants and attorneys, and a wide variety of business types - and without exception - every one of them had trouble with managing their data. One look at their Desktop or MyDocuments - or just watching them trying to find a letter in MS-Word - tells the whole story.

      Ok there's my pitch - I'm looking for anyone who has interest, no matter what your skill level or how much time you can or cannot devote. We need people who can contribute only opinion and advice, as well as hardcore keyboard jocks like me who love to code for 36 hours at a clip ;-) LOL

      12 votes
    2. How do you structure larger projects?

      I'll be writing a relatively large piece of scientific code for the first time, and before I begin I would at least like to outline how the project will be structured so that I don't run into...

      I'll be writing a relatively large piece of scientific code for the first time, and before I begin I would at least like to outline how the project will be structured so that I don't run into headaches later on. The problem is, I don't have much experience structuring large projects. Up until now most of the code I have written as been in the form of python scripts that I string together to form an ad-hoc pipeline for analysis, or else C++ programs that are relatively self contained. My current project is much larger in scope. It will consist of four main 'modules' (I'm not sure if this is the correct term, apologies if not) each of which consist of a handful of .cpp and .h files. The schematic I have in mind for how it should look is something like:

      src
       ├──Module1 (Initializer)
       │         ├ file1.cpp
       │         ├ file1.h
       │         │...
       │         └ Makefile
       ├───Module2 (solver)
       │          ├ file1.cpp
       │          ├ file1.h
       │          │...
       │          └ Makefile
       ├───Module3 (Distribute)
       │          ├ file1.cpp
       │          └Makefile 
       └ Makefile
      

      Basically, I build each self-contained 'module', and use the object files produced there to build my main program. Is there anything I should keep in mind here, or is this basically how such a project should be structured?

      I imagine the particularly structure will be dependent on my project, but I am more interested in general principles to keep in mind.

      14 votes
    3. Do you enjoy programming outside of work?

      I have found this to be a semi controversial topic. Its almost becoming a required point for getting a new job to have open source work that you can show. Some people just enjoy working on...

      I have found this to be a semi controversial topic. Its almost becoming a required point for getting a new job to have open source work that you can show. Some people just enjoy working on programming side projects and others don't want to do any more after they leave the office.

      Whats your opinion on this? Do you work on any side projects? Do you think its reasonable for interviewers to look for open source work when hiring?

      16 votes
    4. Coding Challenge - Design network communication protocol

      Previous challenges It's time for another coding challenge! This challenge isn't mine, it's this challenge (year 5, season 3, challenge 3) by ČVUT FIKS. The task is to design a network...

      Previous challenges

      It's time for another coding challenge!

      This challenge isn't mine, it's this challenge (year 5, season 3, challenge 3) by ČVUT FIKS.

      The task is to design a network communication protocol. You're sending large amount of bits over the network. The problem is that network is not perfect and the message sometimes arrives corrupted. Design a network protocol, that will guarantee that the decoded message will be exactly same as the message that was encoded.

      MESSAGE => (encoding) => message corrupted => (decoding) => MESSAGE
      

      Corruption

      Transmitting the message might corrupt it and introduce errors. Each error in a message (there might be more than one error in a single message) will flip all following bits of the message.

      Example:

      011101 => 011|010
      

      (| is place where an error occured).

      There might be more than one error in a message, but there are some rules:

      • Minimum distance between two errors in a single message is k

      • Number of bits between two errors is always odd number

      According to these rules, describe a communication protocol, that will encode a message, and later decode message with errors.

      Bonus

      • Guarantee your protocol will work always - even when errors are as common as possible

      • Try to make the protocol as short as possible.

      8 votes